문제링크
https://leetcode.com/problems/search-insert-position/
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums)-1
if target>nums[right]:
return right+1
if target<nums[0]:
return 0
while left<=right:
pivot = (left+right)//2
cur = nums[pivot]
prior = nums[pivot-1]
if cur ==target or (target <cur and target>prior):
return pivot
elif cur>target:
right = pivot-1
else:
left = pivot+1
|
cs |
POINT
-풀이방법:
Binary Search로 접근한다.
우선, target을 nums의 최소값[0], 최대값[-1]과 비교해본다.
그 다음 이진탐색을 적용하는데, pivot-1값보단 크고 pivot값보다 작은 경우도 발견해야하므로 이진탐색 종료 조건에 이 경우를 추가하였다.
-Complexity Analysis:
1) Time Complexity : O(logN)
2) Space Complexity: O(1)
'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] 278. First Bad Version (2) | 2022.02.28 |
[LeetCode] 704. Binary Search (0) | 2022.02.28 |