题目描述:题目
思路:二分查找,找到后像左右扩展,查找所得空间
public static int[] searchRange(int[] nums, int target) {
int[] res = {-1, -1};
int l = 0, r = nums.length - 1, mid;
if (nums.length == 0) {
return res;
}
while (nums[l] < nums[r]) {
mid = (l + r) / 2;
if (nums[mid] == target) {
int left = mid, right = mid;
while (left >= 0 && nums[left] == target) {
left--;
}
res[0] = left + 1;
while (right < nums.length && nums[right] == target) {
right++;
}
res[1] = right - 1;
return res;
} else if (nums[mid] < target) {
l = Math.min(nums.length - 1, mid + 1);
} else {
r = Math.max(0, mid - 1);
}
}
if (nums[l] == target) {
return new int[]{l, r};
}
return res;
}