二分法
- 在一个有序数组中找 <= 某个数最右的位置 和 >= 某个数最左的位置
- 举例子,找<=7最右的位置
举例子,找 >= 7最左的位置
本题解法就是上边那两个方法嘛, 一个找最左边的,一个找最右边的 ```java public int[] searchRange(int[] nums, int target) { int[] ans = {-1, -1}; if (nums == null || nums.length == 0) {
return ans;
} ans[0] = findFirst(nums, target); ans[1] = findLast(nums, target); return ans; }
public int findFirst(int[] nums, int num) { int end = nums.length; int begin = 0; int location = -1; while (begin < end) { int mid = (begin + end) >> 1; if (num < nums[mid]) { end = mid; } else if (num > nums[mid]) { begin = mid + 1; } else { end = mid; location = mid; } } return location; }
public int findLast(int[] nums, int num) { int end = nums.length; int begin = 0; int location = -1; while (begin < end) { int mid = (begin + end) >> 1; if (num < nums[mid]) { end = mid; } else if (num > nums[mid]) { begin = mid + 1; } else { begin = mid + 1; location = mid; } } return location; } ```


