感谢y老师
y总yyds
l + r 和 l + r + 1的区别原因如上
class Solution {
public int[] searchRange(int[] nums, int target) {
if(nums.length == 0) return new int[]{-1,-1};
int n = nums.length;
int i = 0, j = n - 1;
while(i < j){
int mid = i + j >> 1;
if(nums[mid] >= target){
j = mid;
}else{
i = mid + 1;
}
}
if(nums[i] != target){
return new int[]{-1, -1};
}else{
int id = j;
int l = 0, r = n - 1;
while(l < r){
int m = l + r + 1 >> 1;
if(nums[m] <= target) l = m;
else r = m - 1;
}
return new int[]{id, r};
}
}
}