解题思路:
1.先进行二分查找,看要找的数是否在数组里,如果在,进行下一步处理,不在,返回-1,在主函数里直接返回{-1,-1}即可。
2.这个数在数组里,以这个数为中心,找这个数的最左边界和最右边界。
3.返回即可
public int[] searchRange(int[] nums, int target) {
int index = binary(nums,target);
if(index == -1){
return new int[] {-1,-1};
}
int left = index;
int right = index;
while(left-1>=0 && nums[left-1] == nums[index]){
left--;
}
while(right+1<nums.length && nums[right+1] == nums[index]){
right++;
}
return new int[] {left,right};
}
public static int binary(int[] nums,int target){
int length = nums.length;
int left = 0;
int right = length - 1;
while(left <= right){
int mid = left + (right - left)/2;
if(nums[mid] == target){
return mid;
}else if(nums[mid]<target){
left = mid+1;
}else{
right = mid-1;
}
}
return -1;
}