Difficulty: Medium
Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1].
Example 1:
Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]```
**Example 2:**
Input: nums = [5,7,7,8,8,10], target = 6 Output: [-1,-1]```
Language: Java
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] result = new int[]{-1, -1};
if (nums.length == 0) {
return result;
}
int i = 0;
int j = nums.length - 1;
while (i < j) {
int mid = (i + j) / 2;
if (nums[mid] < target) {
i = mid + 1;
} else {
j = mid;
}
}
if (nums[i] != target)
return result;
result[0] = i;
j = nums.length - 1;
while (i < j) {
int mid = (i + j) / 2 + 1; // 中位数偏右,避免上面的判断无法跳出循环
if (nums[mid] > target) {
j = mid - 1;
} else {
i = mid;
}
}
if (nums[j] == target) {
result[1] = j;
}
return result;
}
}