0
点赞
收藏
分享

微信扫一扫

【力扣刷题】35. 搜索插入位置

日月同辉9908 2022-04-29 阅读 79

题目链接:力扣

题目:

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

示例 2:

示例 3:

提示:

解答:

【二分法查找——非递归】

1、设置两个游标来记录每次二分的开始索引 left 和结束索引 right

2、循环求中间位置的值,并将这个值与目标target进行比较,相等则返回,否则更新索引的值并进入下一次循环

3、最后判断首位是否大于或等于,若是则插入首位,返回0;反之,直接返回left

完整代码如下:

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        left,right=1,len(nums)-1
        while left<=right:
            mid_index = (left+right)//2
            if nums[mid_index]==target:
                return mid_index
            elif nums[mid_index]>target:
                right = mid_index - 1
            else:
                left = mid_index + 1
        if nums[0]>=target:
            return 0
        return left

提交结果: 

 

举报

相关推荐

0 条评论