当前位置: 首页 > news >正文

LeetCode 35 搜索插入位置——二分查找入门必刷题

LeetCode 35 搜索插入位置——二分查找入门必刷题

前言

二分查找可以说是算法面试中的高频考点,也是很多复杂算法的基础。

很多同学第一次学习二分查找时,总是被各种边界条件绕晕:

  • 为什么是left <= right
  • 为什么更新边界时要mid + 1mid - 1
  • 为什么最后返回的是left
  • 为什么时间复杂度是 O(logn)?

而 LeetCode 35《搜索插入位置》正是学习二分查找最经典的入门题。


一、题目描述

给定一个升序排列的整数数组 nums 和一个目标值 target。

如果目标值存在于数组中,返回其下标;

如果不存在,则返回它应该插入的位置。

要求时间复杂度为 O(log n)。

示例:

nums=[1,3,5,6]target=5输出:2
nums=[1,3,5,6]target=2输出:1
nums=[1,3,5,6]target=7输出:4

二、为什么想到二分查找?

题目有一个非常关键的信息:

数组已经升序排列

只要看到:

  • 有序数组
  • 查找元素
  • O(logn)

基本就要想到二分查找。

因为普通遍历需要:

O(n)

而二分查找每次都能排除一半区间:

O(logn)

效率提升非常明显。


三、核心思想

假设:

nums=[1,3,5,6]target=2

第一次取中间:

mid=1nums[mid]=3

发现:

2<3

说明目标一定在左半部分。

因此直接舍弃右半部分:

right=mid-1

搜索区间缩小一半。

不断重复这个过程即可。


四、标准模板

classSolution:defsearchInsert(self,nums,target):left=0right=len(nums)-1whileleft<=right:mid=(left+right)//2ifnums[mid]==target:returnmidelifnums[mid]<target:left=mid+1else:right=mid-1returnleft

五、为什么最后返回 left?

这是本题最重要的知识点。

假设:

nums=[1,3,5,6]target=2

执行过程:

left=0right=3

第一次:

mid=1nums[mid]=3

因为:

2<3

所以:

right=0

第二次:

mid=0nums[mid]=1

因为:

2>1

所以:

left=1

此时:

left=1right=0

循环结束。

最终:

left=1

正好就是数字2应该插入的位置。

因此:

returnleft

六、二分查找本质

这道题其实是在找:

第一个大于等于 target 的位置

例如:

nums=[1,3,5,6]target=4

第一个大于等于4的元素是:

5

对应下标:

2

这就是答案。

很多高级二分题本质上也都是寻找:

  • 第一个大于等于x
  • 第一个大于x
  • 最后一个小于等于x
  • 最后一个小于x

因此这道题非常值得掌握。


七、高频易错点

1. mid计算错误

错误:

mid=(left+right)/2

得到浮点数。

正确:

mid=(left+right)//2

2. 循环条件写错

左闭右闭区间:

whileleft<=right

不能写成:

whileleft<right

否则最后一个元素可能漏掉。


3. 边界更新方向写反

目标更小:

right=mid-1

目标更大:

left=mid+1

不要写反。


4. right初始化错误

正确:

right=len(nums)-1

因为最后一个元素下标是:

len(nums)-1

八、总结

本题是二分查找最经典的模板题。

核心记住三点:

  1. 有序数组 + O(logn) → 二分查找
  2. 左闭右闭区间使用left <= right
  3. 没找到时返回left

掌握本题之后,可以继续练习:

  • LeetCode 704 二分查找
  • LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
  • LeetCode 69 x的平方根
  • LeetCode 278 第一个错误的版本

这些题目本质都建立在同一个二分模板之上。

http://www.jsqmd.com/news/1027162/

相关文章:

  • 有哪些靠谱的线上上门洗衣洗鞋平台?618洗护优惠合集 - 博客万
  • 原来这种防水材料居然这么受欢迎?
  • 用磅蛋糕实操理解神经网络:反向传播与权重更新的物理教学法
  • 18大功能一站式搞定:ImageStrike革命性CTF图像隐写分析终极方案
  • 在哪预约放心靠谱的全屋家政保洁?靠谱平台三个判断标准 - 博客万
  • 2026年企业级AI大模型API选型指南:摆脱低价陷阱,回归稳定性本质
  • 【2026收藏版】大模型零基础5阶学习路线,程序员转行AI避坑指南
  • 扬州房屋渗漏水检测维修、卫生间漏水免砸砖维修、漏水点精准检测、厨房漏水防水补漏、正规防水补漏公司、口碑榜TOP5靠谱推荐、本地人必选的防水维修公司 - 安佳防水
  • 从AI问答到AI执行:JBoltAI的进化之路
  • Simple Keyboard:你的手机真的需要那些花哨功能吗?
  • Java核心重难点|一文吃透【封装】(大一期末必考大题满分模版)
  • 焦作漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • Python开发者如何用Flet框架快速构建跨平台应用:从入门到精通的完整指南
  • ML 开源社区贡献:从 Issue 到 Commit,参与开源项目的实践路径
  • 如何快速掌握Poppins字体:面向设计师和开发者的完整指南
  • 3个关键特性深度解析:物理信息神经算子(PINO)如何革新偏微分方程求解
  • NSK直线导轨LH25GM至NH25GM升级指南
  • 2026年重庆二手电器回收行业观察:靠谱的冰箱、空调与物资回收企业甄选 - 优质品牌商家
  • 2026年三角梅采购指南:直发厂家如何甄选?多维度实测推荐 - 优质品牌商家
  • PingFangSC字体架构解析:跨平台中文字体性能优化实战指南
  • 2026年Oracle国产化替代实操指南:从评估到上线的全流程方法论
  • 实战指南:三步轻松部署金融AI模型,让投资决策更智能
  • Windows 10激活机制全解析:从密钥类型到数字权利,合法合规激活指南
  • 玉林漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • Python大麦抢票终极指南:3步实现演唱会门票自动化抢购
  • 《健康地理学》初探
  • 2026年行业更新:如何筛选一家真正可靠的光轴厂家 - 品牌鉴赏官2026
  • 网上约家电维修服务哪里维修好收费低?师傅资质与售后保障 - 博客万
  • 有哪些靠谱的线上上门洗衣洗鞋平台?取送全流程一篇看懂 - 博客万
  • 有哪些靠谱的线上上门洗衣洗鞋平台?洗坏赔付规则先了解 - 博客万