[Leetcode]【转载】[二分查找]相关题目汇总/分析/总结
博客
https://www.cnblogs.com/kukri/p/8484992.html
二分查找的框架:
start=0
end=len(nums)-1
mid=start+(end-start)//2 (这样写为了防止溢出,直接写end+start可能溢出)
while start+1<end (注意是小于不是小于等于,小于等于退不出循环)
1.Sqrt(x)
youtube链接
https://www.youtube.com/watch?v=JtZBs9Qy_6M
思路:一定要注意这里是两个杠杠,虽然我也不知道为啥。开始总是不通过,变成了两个杠杠就通过了。。。
我觉得一样啊,后面用了int,变不变两个杠杠应该都一样的。。。诡异
2.Search in Rotated Sorted Array
(leetocde33)
youtube网址:https://www.youtube.com/watch?v=KSZfO65J6hg
因为是分成了两段,所以可以这样做:根据题意,一定是有一部分是升序的(前半段还是后半段)。判断target是属于前半段,还是后半段,假如是属于前半段的,对前半段进行二分。
例如 [4,5,6,7,1,2].前半段是[4,5,6]是正常的,后半段是[6,7,1,2]不是正常的,不能进行二分,只能对前半段正常的进行二分。
3.Search in Rotated Sorted Array (2)
(leetocde81)
4.Find Minimum in Rotated Sorted Array(leetcode 153)
思路:和上一题查找差不多。但是,这个题,由于是找最小值,只看后半部分就可以?(没懂,为啥)
例如 4 5 6 7 0 1 2;4 5 6 0 1 2 3
网址:https://www.youtube.com/watch?v=PK4JQvgo2ZA
二分搜索,时间复杂度 N(log(n)),
5.Find Minimum in Rotated Sorted Array II(leetcode 154)
思路:和上一个题非常类似,多了一个nums[mid]=nums[end]的情况,只要end=end-1就可以了
6.Find Peak Element(leetcode 162)
youtube地址:
https://www.youtube.com/watch?v=hvS_2F2jycQ
这种二分问题的框架,如下图红色圈出的所示。
开始:
start=0;end=len(nums)-1..
中间 :
while 循环
最后:
if 判断一下输出
"--------牛顿法------------”