【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
相关推荐
muyun28001 小时前
History 模式 vs Hash 模式:Vue Router 技术决策因素详解
vue.js·算法·哈希算法
打马诗人2 小时前
【YOLO11】【DeepSort】【NCNN】使用YOLOv11和DeepSort进行行人目标跟踪。(基于ncnn框架,c++实现)
人工智能·算法·目标检测
瓦香钵钵鸡3 小时前
机器学习通关秘籍|Day 02:特征降维、用KNN算法和朴素贝叶斯实现分类
算法·机器学习·分类·贝叶斯·knn·超参数搜索·交叉验证
山烛5 小时前
决策树学习全解析:从理论到实战
人工智能·python·学习·算法·决策树·机器学习
修己xj6 小时前
探索设计模式的宝库:Java-Design-Patterns
算法
鲨鱼辣椒_TUT6 小时前
MySQL连接算法和小表驱动大表的原理
mysql·算法·adb
设计师小聂!7 小时前
力扣热题100------21.合并两个有序链表
算法·leetcode·链表
এ᭄画画的北北7 小时前
力扣-1.两数之和
数据结构·算法·leetcode
shenghaide_jiahu8 小时前
数学建模——递归和动态规划
算法·数学建模·动态规划