解题思路:
使用二分法:先预判size为0的数组和最后一位比target小的数组
然后使用二分法遍历查找
def searchInsert(self, nums: List[int], target: int) -> int:
if size == 0:
return 0
if nums[-1] < target:
return size
left = 0
right = size - 1
while left < right:
m = left + (right - left) // 2
if nums[m] < target:
left = m + 1
else:
right = m
return left
思路二:
暴力遍历
判断只含有一个元素的列表中的元素,若元素比target大则返回0,比target小就返回1.从两端开始遍历,判断各种情况返回相应的值
def searchInsert(self, nums: List[int], target: int) -> int:
k = 0#暴力遍历二分未成功
if len(nums) == 1:
if nums[0] >= target:
return 0
else:
return 1
for i in range(len(nums)):
for j in range(len(nums)-1, 0, -1):
if i != j and i < j and nums[i] < target and nums[j] > target:
continue
elif nums[i] >= target:
return i
elif nums[j] < target:
return j + 1
elif nums[j] == target:
return j
return i