原题如下:
文章图片
其实很简单,二分法就搞定了,但是我看到题解里面有人说有二分模板,是这样的:
文章图片
下面是他对这道题的解法:
文章图片
下面我想记录的是两个问题:
1、为什么条件判断是left<=right我认为是这样子的:
2、为什么最后返回left就可以了
二分查找最后会纠结的无非是下面这两种情况:
文章图片
文章图片
在思考时,要记住的点是,(L+R)/2在这种邻近的情况下,mid是等于L的。
对于第一种情况,
第一次循环,由于在判断时,先判断的L,所以L会mid+1,也就是变成R。
第二次循环,L,R重合了,L不会被触发,反而是R会 -1,变到刚才的L位置。 至此,while循环结束。
返回L就是插入位置。
对于第二种情况,
第一次,L会 +1,和R重合。
第二次,L会+1,超过R,while结束。
返回L就是插入位置。
考虑清楚这两种情况,对于题解中讲述的这种模板也就清楚了。
【LeetCode35. 搜索插入位置】欢迎讨论。
推荐阅读
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- Python|Python 每日一练 二分查找 搜索旋转排序数组 详解
- 【LeetCode】28.实现strstr() (KMP超详细讲解,sunday解法等五种方法,java实现)
- LeetCode-35-搜索插入位置-C语言
- leetcode python28.实现strStr()35. 搜索插入位置
- Leetcode Permutation I & II
- python|leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法
- LeetCode 28 Implement strStr() (C,C++,Java,Python)
- Python|Python Leetcode(665.非递减数列)