二分法:
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> res;
int left=0,right=nums.size()-1;
int mid=(left+right)/2;
int flag=0;
while(left<=right)
{
if(nums[mid]==target)
{
flag=1;
break;
}
else
{
if(nums[mid]<target)
{
left=mid+1;
mid=(left+right)/2;
}
else
{
right=mid-1;
mid=(left+right)/2;
}
}
}
if(flag==0)
{
res.push_back(-1);
res.push_back(-1);
}
else
{
int begin=mid,end=mid;
while(nums[begin]==target)
{
begin--;
if(begin<0)
break;
}
while(nums[end]==target)
{
end++;
if(end>nums.size()-1)
break;
}
res.push_back(begin+1);
res.push_back(end-1);
}
return res;
}
};
摘自别人的解法:
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> res;
int left=0,right=nums.size()-1;
int mid=(left+right)/2;
int flag=0;
while(left<=right)
{
if(nums[mid]==target)
{
flag=1;
break;
}
else
{
if(nums[mid]<target)
{
left=mid+1;
mid=(left+right)/2;
}
else
{
right=mid-1;
mid=(left+right)/2;
}
}
}
if(flag==0)
{
res.push_back(-1);
res.push_back(-1);
}
else
{
int begin=mid,end=mid;
while(nums[begin]==target)
{
begin--;
if(begin<0)
break;
}
while(nums[end]==target)
{
end++;
if(end>nums.size()-1)
break;
}
res.push_back(begin+1);
res.push_back(end-1);
}
return res;
}
};