题解
思想
因为是已经排好序的,利用二分法来搜索,把一些排序算法和搜索算法可以复习一下
代码
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
# 初始化
low,high=0,len(nums)-1
# 在 [low, high] 找 target
while low<=high: #这里要注意是小于等于,等high在low的左边时才跳出循环
mid = (low+high)//2
if nums[mid] == target:
return mid
# 如果 target 大于中间数,则 target 可能在右区间
# 在 [mid + 1, left] 中找
elif nums[mid]<target:
low=mid+1
# 如果 target 小于中间数,则 target 可能在左区间
# 在 [left, mid -1] 中找
else:
high =mid-1
# 如果在数组中没找到,则返回需要插入数值的位置
return high+1