参考1
参考2
参考3
算法思路:假设目标值在闭区间$[l, r]$ 中, 每次将区间长度缩小一半,当 $l = r$ 时,我们就找到了目标值。
二分一般分为两类,第一类是找第一个大于等于target的位置,第二类是找第一个严格大于target的位置
两种分法
1. check(mid) 成立,并且 答案 在左边
- $[l, r] = [l, mid] + [mid + 1, r]$
- Example find the first position
2. check(mid) 成立,并且 答案 在右边
- $[l, r] = [l, mid - 1] + [mid, r]$
- Example find the sqrt
谢谢楼主分享