문제링크
https://leetcode.com/problems/binary-search/
코드
1
2
3
4
5
6
7
8
9
10
11
12
|
class Solution:
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums)-1
while left<=right:
pivot = (left+right)//2
if target==nums[pivot]:
return pivot
elif target<nums[pivot]:
right = pivot-1
else:
left = pivot+1
return -1
|
cs |
POINT
- 풀이방법
Binary Search문제이다.
탐색할 범위를 지정하고 그 가운데를 pivot으로 지정한다.
pivot이 가리키는 값과 target을 비교해서
pivot값이 더 크다면 범위를 (left~pivot-1)로 재정의하고,
pivot값이 더 작다면 탐색 범위를 (pivot+1~right)로 정의한다.
- Complexity Analysis
마스터 정리를 사용하여 시간복잡도를 계산할 수 있다.
1) Time Complexity : O(logN)
마스터 정리를 적용하면, a=1이고 b =2
--> T(N) = 1*T(N/2) + Θ(1)
2) Space Complexity : O(1) (b/c constant space)
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=yyj9301&logNo=221240585554
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] 283. Move Zeroes (0) | 2022.03.02 |
---|---|
[LeetCode] 189. Rotate Array (0) | 2022.03.01 |
[LeetCode] 977. Squares of a Sorted Array (0) | 2022.03.01 |
[LeetCode] 35. Search Insert Position (0) | 2022.02.28 |
[LeetCode] 278. First Bad Version (2) | 2022.02.28 |