思路:
这道题依旧是二分专属题,而且还是很典型的题,通过两次二分,这里的话是用到了二分的两个模板:最小范围找最大值以及最大范围找最小值。模板请点击!!!
代码:
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
if(nums.empty())
return {-1,-1};
int l=0,r=nums.size()-1;
while(l<r)
{
int mid = l + r >> 1;
if(nums[mid]>=target)
r = mid;
else
l = mid + 1;
}
if(nums[r]!=target)
return {-1,-1};
int start = r;
l = 0,r = nums.size() - 1;
while(l<r)
{
int mid = l + r + 1 >> 1;
if(nums[mid]<=target)
l = mid;
else
r = mid - 1;
}
int end = r;
return {start,end};
}
};