정렬된 중복되지 않는 정수 배열과 목표 값을 고려할 때, 목표 값이 배열에서 발견되면 해당 인덱스를 반환합니다. 발견되지 않으면, 정렬된 순서대로 삽입될 수 있는 인덱스를 반환합니다.
알고리즘은 (O(log n)) 시간 복잡도로 작성되어야 합니다.
입력: nums = [1,3,5,6], target = 5
출력: 2
입력: nums = [1,3,5,6], target = 2
출력: 1
입력: nums = [1,3,5,6], target = 7
출력: 4
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return left