二分算法
二分算法技巧
- 代码模板
1 | while(left <= right){ |
如果target值有多个
- 取最左边的值
1
2
3
4
5
6
7
8
9while(left <= right){
int mid = left + (right - left) / 2;
if(arr[mid] < target){
left = mid + 1;
}else{
right = mid - 1;
}
}
return left;- 取最右边的值
1
2
3
4
5
6
7
8
9while(left <= right){
int mid = left + (right - left) / 2;
if(arr[mid] <= target){
left = mid + 1;
}else{
right = mid - 1;
}
}
return right;取最靠近target的两边的第一个值
1 | while(left <= right){ |
- 查找峰值
1 | // 这里不能相等,因为如果left == right时,刚好nums[mid] == nums[mid + 1],那么会陷入死循环 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青柠!
评论


















































