二分法应用场景:
- 寻找一个数
- 寻找左侧边界
- 寻找右侧边界
重点难点:
- 需不需要带“ = ”号
- 需不需要+1
代码讲解:
一、寻找一个数
int binarySearch(int[] nums, int target) {
int left = 0;
int right = nums.length - 1; // 注意
while(left <= right) {
int mid = (right + left) / 2;
if(nums[mid] == target)
return mid;
else if (nums[mid] < target)
left = mid + 1; // 注意
else if (nums[mid] > target)
right = mid - 1; // 注意
}
return -1;