「搜索左侧边界」的二分搜索算法的具体代码实现如下:
// 搜索左侧边界int left_bound(int[] nums, int target) {if (nums.length == 0) return -1;int left = 0, right = nums.length;while (left < right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {// 当找到 target 时,收缩右侧边界right = mid;} else if (nums[mid] < target) {left = mid + 1;} else if (nums[mid] > target) {right = mid;}}return left;}
「搜索右侧边界」的二分搜索算法的具体代码实现如下:
// 搜索右侧边界int right_bound(int[] nums, int target) {if (nums.length == 0) return -1;int left = 0, right = nums.length;while (left < right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {// 当找到 target 时,收缩左侧边界left = mid + 1;} else if (nums[mid] < target) {left = mid + 1;} else if (nums[mid] > target) {right = mid;}}return left - 1; //return right - 1;}
