LeetCode-35.搜索插入位置

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

请必须使用时间复杂度为 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

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums无重复元素升序排列数组
  • -104 <= target <= 104

解题思路:使用二分查找算法直接插入,代码极其简洁,展示如下。

Python3代码:

python 复制代码
class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        l,r = 0,len(nums)-1
        while l <= r:
            mid = l+(r-l)//2
            if nums[mid] < target:
                l = mid+1
            else:
                r = mid-1
        return l
相关推荐
Lazionr8 小时前
【链表经典OJ-上】
c语言·数据结构·链表
ZPC82108 小时前
nmtui
人工智能·算法·机器人
_深海凉_8 小时前
LeetCode热题100-全排列
算法·leetcode·职场和发展
programhelp_8 小时前
TikTok 26 Summer SDE Intern 面经分享|两轮技术面 + Timeline 复盘
数据结构·经验分享·算法·面试
成都易yisdong8 小时前
C# 实现道路横断面自动生成与格式转换(最小二乘拟合 + 方向向量法)
windows·算法·c#·visual studio
无限进步_8 小时前
二叉树的前序遍历(非递归实现)
开发语言·数据结构·c++·windows·git·visual studio
01二进制代码漫游日记8 小时前
【C语言数据结构】之解锁双向链表(头插、头删等操作)
c语言·数据结构·学习·链表
阿Y加油吧8 小时前
算法二刷复盘:LeetCode 39 组合总和 & 22 括号生成(Java 回溯精讲)
java·算法·leetcode
WL_Aurora8 小时前
每日一题——自然倍树
数据结构·python·算法·深度优先
水木流年追梦8 小时前
CodeTop Top 300 热门题目3-字符串相加
java·前端·算法