1. 寻找特定target
- 如果
right = nums.length - 1
,此时查找区间为两端都闭[left, right]
, 则while循环条件应为left <= right
,即left > right
时停止查找
1 | public int binarySearch(int[] nums, int target) { |
2. 寻找下界
nums[middle] == target
时应该向下逼近,即right = middle - 1
1 | public int lowerBound(int[] nums, int target) { |
3. 寻找上界
nums[middle] == target
时应该向上逼近,即left = middle - 1
1 | public int upperBound(int[] nums, int target) { |