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

leetcode hot100刷题日记——17.搜索插入位置

哈喽~第二周刷题开始了,今天这道题虽然属于简单,而且是二分查找模板题,但是我太菜了我感觉有好多可以让我思考的地方。
就一起看看这道题目吧~
在这里插入图片描述
解答:

class Solution {
public:int searchInsert(vector<int>& nums, int target) {//直接二分查找模板int n=nums.size();int left=0,right=n-1;int mid=0;while(left<=right){mid=left+(right-left)/2;if(target>nums[mid]){left=mid+1;}else{right=mid-1;}}return left;}
};

时间复杂度:O(logn)
空间复杂度:O(1)

思考:
为什么返回left就可以得到target要插入的位置呢?
left 指向的是 第一个大于或等于 target 的位置。
right 指向的是 最后一个小于 target 的位置。

我们都知道二分查找原来是返回mid,即nums[mid]=target.
在我们的代码中,这时right会赋值为mid-1。之后如果left<=right,会继续循环,但此时只有left会增加而right不变,直到while判定条件为否。

理解:right已经到头了,right不会再变了。left要逐渐逼近right

而退出while的时候,left一定为right+1,即left=mid-1+1=mid
注意这里mid我加粗了,这里mid不是每次循环在变的mid,而是之前的right的值的那个mid

也就是说,nums[left]=nums[mid]=target
和二分查找又一样了对不对??

相关文章:

  • java基础(面向对象进阶高级)内部类
  • Webtrees 手册/程序概述
  • 游戏:元梦之星游戏开发代码(谢苏)
  • 【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析
  • C++多态与虚函数
  • 【大模型Pre-Training实战总结】实现Qwen3增量预训练,Lora训练与合并
  • 时空弯曲和测地线浅谈
  • 系统发生GC内存溢出、频繁 Full GC、JVM报错
  • Set系列集合
  • 解锁 MCP 中的 JSON-RPC:跨平台通信的奥秘
  • SymPy | 其他未知数表示方程中的某一未知数
  • JavaSE核心知识点04工具04-01(JDK21)
  • [特殊字符] useTranslations 客户端使用教程(Next.js + next-intl)
  • vue3+vite项目中使用Tailwind CSS
  • 深浅拷贝?
  • day 37
  • SWOT 模型:基础框架的应用价值与改进路径
  • day 22 练习——泰坦尼克号幸存者预测
  • Spring boot基础
  • JAVA基础编程练习题--50道
  • 免费b站不收费网站2023/最近一周新闻
  • joomla 做外贸网站 好的/亿速云
  • 网站开发环境配置难/南京网站推广公司
  • 简单的html网站模板下载/html网页制作app
  • 深圳企业家日迈入第五年/谷歌seo推广服务
  • 网站建设的特色/seo免费