二分搜索-解题思路
二分搜索
在计算机科学中,二进制搜索,也被称为折半搜索算法,是一种搜索算法,每次搜索都能排除掉一半的不存在目标结果的集合,所以在最坏情况下,经过$log(n)$次搜索,得到最终结果。
解题实例
如何将二分搜索以代码的形式,转化为解决某几类问题的利器呢?下面以两种类型的题目为例,总结出一种通用的解题思路。
1.搜索某个值
1 | class Solution: |
2.求左(右)边界值
1 | # The isBadVersion API is already defined for you. |
思路总结
可以看出,二分搜索是可以总结出固定的解题思路,快速写出解题代码。
确定搜索区间为$[left, right]$,注意是两边都闭的区间(当然也可以是$[left, right)$的区间,不过此时区间的初始值会不同,这个可以自己去想一想)
缩小区间
- $mid$在所求值左边,下一搜索区间为$[left, mid-1]$
- $mid$在所求值右边,下一搜素区间为$[mid+1, right]$
- $mid$等于所求值,
- 求确定值则直接返回$mid$
- 求左边界,则归属为第一种情况
- 求右边界,则归属为第二种情况
代码模板
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Gua!
评论