二分法之-搜索插入位置
程序员文章站
2022-06-17 18:42:09
...
元素存在,则返回索引
关键在于元素不存在,同样返回位置的索引
当左区间大于右区间时结束循环,会出现一种【0,-1】的情况,并且无法整除,会导致区间下溢的情况出现。需要单独判断这一情况。
否则再与最后一个节点的值比大小,目标值大于节点值则插入在右边,否则在左边
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
min_idx=0
max_idx=len(nums)-1
mid_idx=len(nums)//2
while min_idx<=max_idx:
if nums[mid_idx]==target:
return mid_idx
elif nums[mid_idx]>target:
max_idx=mid_idx-1
mid_idx=(min_idx+max_idx)//2
else:
min_idx=mid_idx+1
mid_idx=(min_idx+max_idx)//2
if mid_idx>=0:
if nums[mid_idx]>target:
return mid_idx
else:
return mid_idx+1
else:
return 0