题目描述
思路一:
遍历整个数组,因为数组是有序的,所以第一次发现索引对应的值大于或等于target,我们就在这个索引前面插入这个值,此时的索引就是j,如果遍历了整个数组都没有条件符合,那就是target是最大值,索引值就是数组的长度
时间复杂度是O(n)
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
for j in range(len(nums)):
if nums[j] >= target:
return j
return len(nums)
思路二:
可以使用二分查找
时间复杂度是O(logn)
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 target < nums[mid]:
right = mid-1
elif target == nums[mid]:
return mid
else:
left = mid+1
return left