34. Search for a Range
Given a sorted array of integers, 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]
.
For example,
Given [5, 7, 7, 8, 8, 10]
and target value 8,
return [3, 4]
.
public class Solution {
public int[] searchRange(int[] nums, int target) {
int[] res= {-1, -1};
if (nums.length==0 || nums[0]>target || nums[nums.length-1]<target) return res;
int left=0, right= nums.length-1;
while (left<right){
int center= (left+right)/2;
if (nums[center]<target) left= center+1;
else right= center;
}
if (nums[left]!=target) return res;
else res[0]=left;
right= nums.length-1;
while (left<right){
int center= (left+right)/2+1;
if (nums[center]>target) right= center-1;
else left= center;
}
res[1]= left;
return res;
}
}