查找左边界
int left = 0;int right = len - 1;while(left <= right) {int mid = left + (right - left) / 2;if(nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}左边界 = left;
如果所查找的目标值不在数组中,分为三种情况:
- 目标值小于任何一个元素,所得结果为 left = 0 , right = -1.
- 目标值大于任何一个元素,所得结果为 left = len, right = len - 1.
- 目标值在数组范围内,所得结果见实例:
在数组 [5, 7, 7, 8, 8, 10] 中 target = 6 的左边界为 1.
查找右边界
int left = 0;int right = len - 1;while(left <= right) {int mid = left + (right - left) / 2;if(nums[mid] <= target) {left = mid + 1;} else {right = mid - 1;}}右边界 = right;
如果所查找的目标值不在数组中,分为三种情况:
- 目标值小于任何一个元素,所得结果为 left = 0 , right = -1.
- 目标值大于任何一个元素,所得结果为 left = len, right = len - 1.
- 目标值在数组范围内,所得结果见实例:
在数组 [5, 7, 7, 8, 8, 10] 中 target = 6 的左边界为 0.
查找某个目标
直接套用查找左边界的代码,返回的值即为目标值在数组中的下标。
若数组中没有该目标值,返回值表示数组中有多少元素比目标值小。
