【LeetCode】35. 搜索插入位置

1 问题

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

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

示例 1:

输入: nums = [1,3,5,6], target = 5

输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2

输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7

输出: 4

2 答案

自己写的,采用蓝红二分法,套模板,简单方便

python 复制代码
class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        l = -1
        r = len(nums)
        while l+1 < r:
            mid = l+(r-l)//2
            if nums[mid] <= target: 
                l = mid
            else:
                r = mid
        if nums[l] == target:
            return l
        else:
            return r

官方解,将三种情况 nums[middle] < targe, nums[middle] > target, nums[middle] = target,也比较好理解

python 复制代码
class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        left, right = 0, len(nums) - 1

        while left <= right:
            middle = (left + right) // 2

            if nums[middle] < target:
                left = middle + 1
            elif nums[middle] > target:
                right = middle - 1
            else:
                return middle
        return right + 1  # 没有相等的,则插入,并返回索引 right + 1
相关推荐
做科研的周师兄几秒前
中国土壤有机质数据集
人工智能·算法·机器学习·分类·数据挖掘
来深圳16 分钟前
leetcode 739. 每日温度
java·算法·leetcode
yaoh.wang29 分钟前
力扣(LeetCode) 104: 二叉树的最大深度 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
hetao173383741 分钟前
2025-12-21~22 hetao1733837的刷题笔记
c++·笔记·算法
醒过来摸鱼1 小时前
递归三种分类方法
算法
炽烈小老头1 小时前
【每天学习一点算法 2025/12/22】将有序数组转换为二叉搜索树
学习·算法
jghhh012 小时前
POCS(凸集投影)算法解决部分k空间数据缺失导致吉布斯伪影
算法
罗湖老棍子2 小时前
最小函数值(minval)(信息学奥赛一本通- P1370)
数据结构·c++·算法··优先队列·
LYFlied2 小时前
【每日算法】LeetCode 4. 寻找两个正序数组的中位数
算法·leetcode·面试·职场和发展
长安er2 小时前
LeetCode 62/64/5/1143多维动态规划核心题型总结
算法·leetcode·mybatis·动态规划