概念
- 左指针到右指针能取到的值表示搜索范围
- 加减法比位移优先级高
- mid用防溢出写法,加法改成减法
- 根据开区间写法,满足条件时 l == r
模板一
寻找左边界
while (l < r) {
int mid = r - (r - l + 1 >> 1);
if (满足要求) {
r = mid; // 往左找
} else {
l = mid + 1; // 不满足
}
}
return l;
模板二
寻找右边界
while (l < r) {
int mid = r - (r - l >> 1);
if (满足要求) {
l = mid;
} else {
r = mid - 1;
}
}
return l; // 注意检查l是否满足要求,还是仅仅是跳出循环了。
可直接解决的题目(模板题)
旋转数组
leetcode.cn/problems/se… leetcode.cn/problems/fi…
- 不具备二分性,想办法转化成具备二分性的数组。 leetcode.cn/problems/fi… leetcode.cn/problems/se…