Algorithm/LeetCode

[LeetCode] 704. Binary Search

rrojin 2022. 2. 28. 11:26

문제링크

https://leetcode.com/problems/binary-search/

 

Binary Search - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

코드

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 = 0len(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 

 

마스터 정리 Master Theorem 알고리즘 시간 복잡도 구하기

알고리즘과 시간 복잡도알고리즘을 만드는 법만큼 알고리즘의 시간 복잡도 구하는 것 역시 중요하다고 생각...

blog.naver.com

 

 

'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