题目
题解
- 二分查找,找到后,再往前往后找到第一个和最后一个
代码
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int n=nums.size();
if(!n) return {-1,-1};
int l=0,r=n-1;
while(l<=r){
int mid=(l+r)/2;
if(nums[mid]==target){
int a=mid,b=mid;
while(a>=0&&nums[a]==target)
a--;
while(b<=n-1&&nums[b]==target)
b++;
return {a+1,b-1};
}
else if(nums[mid]>target){
r=mid-1;
}
else if(nums[mid]<target){
l=mid+1;
}
}
return {-1,-1};
}
};