题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。
思路
4种情况:
- 目标值在数组所有元素之前 [0,-1]
- 目标值等于数组中的某一个元素 return middle
- 目标值插入数组中的位置 return right+1
- 目标值在所有元素之后 return right+1 因为right是len(nums) - 1
代码
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
else:
return mid
return right +1