given an ascending array of integers nums, and a target value target. Find the starting and ending positions in the array for the given target value.
your algorithm’s time complexity must be O(log n).
if there is no target value in the array, return [-1, -1].
example 1 strong> : p>
enter strong> : nums =,7,7,8,8,10 [5], target = 8
strong> output: [3, 4] p>
sample 2 strong> : p>
enter strong> : nums =,7,7,8,8,10 [5], target = 6
strong> output: [1, 1] p>
thought and code
O(log n) is the complexity of
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] res = new int[] {-1, -1};
if (nums.length < 1) return res;
int firstIndex = search(nums, target - 1);
// 如果大于target-1 的第一个索引就超级界 或者 第一个索引的值不是target 那么就说明当前数组没有目标值
if (firstIndex == nums.length || nums[firstIndex] != target) return res;
else res[0] = firstIndex;
res[1] = search(nums, target) - 1;
return res;
}
public int search(int[] nums, int target) {
// 找到大于target值的第一个位置
int l = 0, r = nums.length;
while (l < r) {
int m = l + (r - l) / 2;
if (target >= nums[m]) l = m + 1;
else r = m;
}
return l;
}
}
div>