转自:https://segmentfault.com/a/1190000009241523
思路一 二分法初级运用
最初的思路是使用二分法找到目标值的其中一个下标,再根据该下标左右遍历得出初始下标和结束下标。
public int[] searchRange(int[] nums, int target) {
int[] result = new int[]{-1, -1};
int left = 0;
int right = nums.length-1;
while(left<=right){
int mid = (left + right)/2;
if(nums[mid]==target){
while(mid>=left && nums[mid]==target){
mid--;
}
result[0] = mid+1;
mid = (left + right)/2;
while(mid<=right && nums[mid]==target){
mid++;
}
result[1] = mid - 1;
break;
}else if (nums[mid] > target){
right = mid-1;
}else{
left = mid+1;
}
}
return result;
}