二分法之-搜索插入位置

元素存在,则返回索引
关键在于元素不存在,同样返回位置的索引
当左区间大于右区间时结束循环,会出现一种【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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值