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

力扣HOT100之二分查找:35. 搜索插入位置


这道题属于是二分查找的入门题了,我依稀记得一些二分查找的编码要点,但是最后还是写出了一个死循环,无语(ˉ▽ˉ;)…又回去看了下自己当时的博客和卡哥的视频,这才发现自己分情况只分了两种,最后导致死循环。。。下面直接说思路。本题我们采用左闭右开的二分查找法,左区间的搜索范围为[left, mid),而右区间的搜索范围为[mid, right),我们要确保这两个查找区间在初始状态下覆盖整个数组的元素,因此left初始化为0right初始化为nums.size(),而不是nums.size() - 1,下面来讨论区间的更新情况:

  1. nums[mid] > target时,则右区间内所有的元素都比target大,插入位置应当在左区间内,因此我们将right赋值为mid(因为nums[mid] > target,所以原来的nums[mid]不应包含在区间内,right赋值为mid而不是mid - 1
  2. nums[mid] < target时,则左区间内所有元素都比target小,插入位置应当在右区间内,因此我们将left赋值为mid(因为nums[mid] < target,新的区间不应当继续包含nums[mid]left赋值为mid + 1而不是mid
  3. nums[mid] == target时,说明我们在数组中找到了与target值一样的元素,根据输入样例,我们直接将元素插入当前位置,原来的元素后移一位即可,所以我们直接返回mid
    循环条件是查找区间合法,对于左开右闭的区间,我们必须要保证里面至少有一个元素,因此left不能等于right,必须要保证left < right,左闭右开的区间才是合法的。
    当循环正常结束,一定是数组中没有与target相等的元素,最终触发left == right,退出循环,此时leftright返回哪个都可以,此时nums[left]对应的是数组中第一个大于target的元素,在此处插入,则该位置及以后的元素向后移一位,依然能保证插入后有序。
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left = 0, right = nums.size();int mid;//使用左闭右开的找法//左边的查找范围为[left, mid),右边的查找范围为[mid, right)//对于左闭右开的区间,左右端点的差值至少为1才合法while(left < right){mid = (left + right) / 2;if(nums[mid] > target) //插入位置在左区间内right = mid;else if(nums[mid] < target)left = mid + 1;else return mid; }return left;}
};

相关文章:

  • 【计网】SW、GBN、SR、TCP
  • JS 函数柯里化
  • 今日行情明日机会——20250604
  • 前端面试题之call、apply 和 bind
  • 在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
  • 部署SD-WAN与现有网络架构的兼容性分析:如何实现平滑集成与避免设备浪费?
  • 【HarmonyOS 5】生活与服务开发实践详解以及服务卡片案例
  • 《P4799 [CEOI 2015] 世界冰球锦标赛 (Day2)》
  • nndeploy: 易用、高性能、支持多端的AI推理部署框架
  • HDU-2973 YAPTCHA
  • 【大模型:知识图谱】--4.neo4j数据库管理(cypher语法1)
  • Delft3D软件介绍及建模原理和步骤;Delft3D数值模拟溶质运移模型建立;地表水环境影响评价报告编写思路
  • Python 开发效率秘籍:PyCharm、VS Code 与 Anaconda 配置与实战全解
  • 深入理解计算机进制:从原理到 C++ 实现
  • Linux操作系统Shell脚本概述与命令实战
  • 【使用JAVA调用deepseek】实现自能回复
  • ffmpeg(三):处理原始数据命令
  • Quipus系统的视频知识库的构建原理及使用
  • 编译一个Mac M系列可以用的yuview
  • JAVA国际版一对一视频交友视频聊天系统源码支持H5+APP
  • 银川网站推广/宁波seo网络推广公司排名
  • 免费美国网站/谷歌浏览器引擎入口
  • 净化科技网站建设/佛山做网站推广的公司
  • 小型企业网站开发价格/百度手机助手app下载官网
  • wordpress管理账户/太原建站seo
  • 建站的cms/搜索排名优化软件