- 算法
二分查找 - 核心思想
二分查找的边界问题 - 代码
class Solution {
public int findPeakElement(int[] nums) {
if(nums.length == 1) return 0;
if(nums.length == 2) return nums[0] > nums[1] ? 0:1;
int left = 0;
int right = nums.length - 1;
int mid = 0;
while(left <= right){
mid = (left + right) / 2;
System.out.println("mid:"+mid);
System.out.println("left:"+left);
System.out.println("right:"+right);
if(nums[mid] > nums[mid + 1]) right = mid - 1;
else left =mid + 1;
}
return left;
}
}
- 二分总结(1)
二分查找可以分为找目标、找左边界、右边界、左右边界问题,一般来说看到有序序列就要考虑二分查找了。
左边界:①有序存在重复元素②部分有序,无重复③部分有序,包含有序
右边界:不单独使用
左右边界:上述两个配合使用