欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分法之-搜索插入位置

程序员文章站 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

二分法之-搜索插入位置