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