代码随想录算法训练营第一|35搜索插入

数组方面的基本都是一次过了,主要是这个搜索插入位置的时候卡顿了一下。

这个插入位置,实际上找的就是最大比target小的数据索引+1,或者是最小比target大的数据索引。

下面的解法是基于找到最大比target小的数据的索引(目标索引) 此时我采用了左闭右闭的写法,

  1. 出现等于的情况直接跳出

  2. 目标在右区间,目标索引不会出现在 mid和mid左侧,目前能找到的最大数据是mid,

    2.1 尝试left =mid+1是否仍然可以比target大

  3. 目标在左区间,目标索引不会出现在 mid和mid右侧,right = mid-1

    def searchInsert(self, nums: List[int], target: int) -> int:
        left,right=0,len(nums)-1
        while left<=right:
            mid = (left+right)//2
            if nums[mid]==target:
                return mid
            if nums[mid]<target:
                left = mid+1
            else:
                right = mid-1
                if right>len(nums):
                    return right-1
        return left
全部评论

相关推荐

qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务