二分法
1.先用二分法来找到目标值的开始的下标,之后再把目标值加1,之后再进行查找目标值加1的下标这样就能找到目标值的结束的下标。
class Solution {
public int[] searchRange(int[] nums, int target) {
//接收开始值
int start=jancha(nums,target);
//接收结束值
int end=jancha(nums,target+1)-1;
//判断接收的下标的值是否是目标值
if(start<=end&&nums[start]==target&&nums[end]==target){
return new int []{start,end};
}
return new int []{-1,-1};
}
public int jancha(int []nums,int target){
//left为0,right为length-1。
int left=0; int right=nums.length-1;
int zhi=nums.length;
//用二分法来进行查找
while(left<=right){
//中间值的下标
int mid=(left+right)/2;
//更新左右的区间
if(nums[mid]>=target){
right=mid-1;
zhi=mid;
}else{
left=mid+1;
}
}
return zhi;
}
}