题目链接:LeeCode34在排序数组中查找元素的第一个和最后一个位置
题目描述:
二分法,直接找出想找的元素位置向前后找,直到找到两边坐标返回
public static int[] searchRange(int[] nums, int target) {
int l=0,r=nums.length-1;
int ans=-1;
while (l<=r){
//中间坐标
int mid=l+(r-l)/2;
int middata=nums[mid];
if(middata>target){
r=mid-1;
}else if(middata<target){
l=mid+1;
}else{
ans=mid;
break;
}
}
//没找到
if (ans == -1) return new int[]{
-1,-1};
l=ans-1;
r=ans+1;
while (l>=0&&nums[l] == target) l--;
while (r< nums.length&&nums[r] == target) r++;
return new int[]{
l+1,r-1};
}