Liweiwei的模板
重点阅读这篇文章就可以了:liweiwei。
相应的视频:liweiwei。其中8-1,8-7和8-8是重点。
liweiwei文章的最后,列有三类题型,及相应的题目。
对liweiwei模板的几点体会:
1)该模板基本是采用“左闭右闭”。即L=最左的一个,R=最右的一个。
2)while(L<R) 还是 while(L<=R)
while(L<=R): 目标在循环体内能找到。如果循环体结束,表示没有找到结果。
if else 语句分三段判断(单独判断:mid==目标 )。
while(L<R): 循环体结束时,结果就是L。此时L=R。
if else 语句分二段判断(不单独判断:mid==目标 )。
3)mid 的取值是 L+(R-L)/2 还是 L+(R-L+1)/2 ? (取错了会导致死循环)
死循环只会发生在
a) 只剩2个元素的时候,即(L+1) ==R。
b) if else 语句分二段判断,
此时有两种题型:
题型1 -- 小于某数的最大的那个
L=mid, R=mid-1
采用 mid = L+(R-L)/2 -- 会死循环
采用 mid = L+(R-L+1)/2 -- 不会死循环
题型2 -- 大于某数的最小的那个
L=mid+1, R=mid
采用 mid = L+(R-L)/2 -- 不会死循环
采用 mid = L+(R-L+1)/2 -- 会死循环
Leetcode 二分法题库
本文详细解析了Liweiwei的二分查找模板,强调了模板中的关键点:左闭右闭原则、循环条件以及mid值的计算。讨论了可能导致死循环的情况,并通过实例分析了针对不同题型如何避免死循环。同时提到了LeetCode上的二分法相关题目,供读者深入学习。

632

被折叠的 条评论
为什么被折叠?



