public class _34在排序数组中查找元素的第一个和最后一个位置_hot {
public int[] searchRange(int[] nums, int target) {
int[] result = {-1, -1};
int left = findFirst(nums, target);
if (left == nums.length || nums[left] != target) {
return result;
}
result[0] = left;
result[1] = findLast(nums, target) - 1;
return result;
}
private int findFirst(int[] nums, int target) {
int low = 0, high = nums.length;
while (low < high) {
int mid = low + (high - low) / 2;
if (nums[mid] < target) {
low = low + 1;
} else {
high = mid;
}
}
return low;
}
private int findLast(int[] nums, int target) {
int low = 0, high = nums.length;
while (low < high) {
int mid = low + (high - low) / 2;
if (nums[mid] <= target) {
low = low + 1;
} else {
high = mid;
}
}
return low;
}
}