34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
核心思路:二分查找
本题关键:
1.理解找左端点的二分查找算法
2.理解找右端点的二分查找算法
(请依次看解读内容)

思考一下,如果求右端点的判断指针移动方法不变,使用mid=left+(right-left)/2求右端点也是一样能求出来的。
java
public int[] searchRange(int[] nums, int target){
int[] indexes = new int[]{-1,-1};
if(nums.length==0) return indexes;
int left=0,right=nums.length-1;
//找左端点-->使用int mid=left+(right-left)/2;
while(left<right){
int mid = left+(right-left)/2;
int num = nums[mid];
if(num<target) left=mid+1;
else right=mid;
}
if(nums[left]==target) {
indexes[0]=left;
}else return indexes;
left=0;
right=nums.length-1;
//找右端点-->使用int mid=left+(right-left+1)/2;
while(left<right){
int mid = left+(right-left+1)/2;
int num = nums[mid];
if(num<=target) left=mid;
else right=mid-1;
}
if(nums[left]==target) indexes[1]=left;
return indexes;
}