原题链接:Leecode 34. 在排序数组中查找元素的第一个和最后一个位置
我的二分真的很有问题!
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int n=nums.size();
if(n==0) return {-1,-1};
int l=0,r=n-1;
vector<int> res;
while(l<r)
{
int mid=(l+r)>>1;
if(nums[mid]>=target)
r=mid;
else
l=mid+1;
}
if(nums[l]!=target) return {-1,-1};
res.push_back(l);
l=0,r=n-1;
while(l<r)
{
int mid=(l+r+1)>>1;
if(nums[mid]<=target)
l=mid;
else
r=mid-1;
}
res.push_back(l);
return res;
}
};