您的位置:首页 > 其它

34. Search for a Range

2016-04-26 10:45 218 查看
class Solution {
private:
int binerySearch(vector<int>&nums,int searchnum,int start,int end)
{
if(start<=end)
{
int mid=(start+end)/2;
if(nums[mid]==searchnum)
return mid;
else if(searchnum<nums[mid])
{
return binerySearch(nums,searchnum,start,mid-1);
}
else
{
return binerySearch(nums,searchnum,mid+1,end);
}
}
else return -1;
}
public:
vector<int> searchRange(vector<int>& nums, int target) {

vector<int> result;
if(nums.size()==0)
{
result.push_back(-1);
result.push_back(-1);
return result;
}
int findfirst=binerySearch(nums,target,0,nums.size()-1);
if(findfirst==-1)
{
result.push_back(-1);
result.push_back(-1);
}else
{
int left=findfirst;
int right=findfirst;
while(left>=0&&nums[left]==target)
{
left--;
}
left++;
while(right<=nums.size()-1&&nums[right]==target)
{
right++;
}
right--;
result.push_back(left);
result.push_back(right);
}
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: