这道题主要的方法为二分查找
思路为首先找到第一个目标数,然后通过第一个目标数向两边扩张寻找
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
if(nums.size()==1&&nums[0]==target) return {0,0};
int left=0,right=nums.size()-1;
int flag;
while(left<=right)
{
int mid=(left+right)/2;
if(target==nums[mid])
{
flag=mid;
break;
}
else if(target>nums[mid])
left=mid+1;
else
right=mid-1;
}
if(left>right)
return {-1,-1};
left=flag;
right=flag;
while(nums[--left]==target&&left>=0);
while(nums[++right]==target&&right<=nums.size()-1);
return {left+1,right-1};
}
};