简单题,先找数字的位置,再找范围。
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> result;
result.push_back(-1);
result.push_back(-1);
if(nums.size()==0)
return result;
int left=0;
int right=nums.size()-1;
int mid=0;
while(right-left>1)
{
mid=left+(right-left)/2;
if(nums[mid]>target)
right=mid-1;
else if(nums[mid]<target)
left=mid+1;
else
break;
}
int targetIndex=0;
if(right-left>1)
targetIndex=mid;
else
{
if(nums[left]==target)
targetIndex=left;
else if(nums[right]==target)
targetIndex=right;
else
targetIndex=-1;
}
//cout<<targetIndex;
if(targetIndex>=0)
{
int leftRange=targetIndex;
int rightRange=targetIndex;
while(leftRange>=0&&nums[leftRange]==target)
leftRange--;
while(rightRange<nums.size()&&nums[rightRange]==target)
rightRange++;
result[0]=(leftRange+1);
result[1]=(rightRange-1);
}
return result;
}
};