题目描述
思路分析
二分
经典二分问题。注意特殊情况的判断即可。
代码实现
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
if(nums.size()==0) return{-1,-1};
int l=0,r=nums.size()-1;
while(l<r){
int mid=(l+r)/2;
if(nums[mid]>=target) r=mid;
else l=mid+1;
}
int resl=l;
l=0,r=nums.size()-1;
while(l<r){
int mid=(l+r+1)/2;
if(nums[mid]<=target) l=mid;
else r=mid-1;
}
int resr=l;
vector<int> res;
if(nums[resl]==target) res.push_back(resl);
else res.push_back(-1);
if(nums[resr]==target) res.push_back(resr);
else res.push_back(-1);
return res;
}
};