刷题笔记

35.搜索插入位置

这题咋整,暴力解还蛮好想的,已经排序好了,遍历一遍,遇到相同的或者大一点的就返回下标,那么就是需要在遍历的同时取出下标。

for index,item in enumerate(nums):
    if item >= target:
        return index

然后,这道题可以使用二分查找的方式来做,基本思路就是先选定最左和最右,然后选取中间,和目标值相比较。如果左比右小的情况下,目标落在左边区间,那中间值就成为右边界。落在右边区间,中间值+1作为新左边界。 但是若 low+high > Interger.MAX_VALUE 时,此时会导致数据溢出,则导致mid错误, 所以 mid 应该改为 low +(high - low)/ 2;

left,right=0,len(nums)
while left < right:
    mid = left + (right - left) / 2
    if nums[mid] < target:
        left = mid + 1
    else:
        right = mid
return left

发表回复

您的电子邮箱地址不会被公开。