class Solution {
public:
int binary_search_begin(vector<int>& nums,int b,int e,int p){
if(b==e){
if(nums[b]==p){
return b;
}
else{
return -1;
}
}
else{
int mid=(b+e)/2;
if(p<=nums[mid]){
return binary_search_begin(nums,b,mid,p);
}
else{
return binary_search_begin(nums,mid+1,e,p);
}
}
}
int binary_search_end(vector<int>& nums,int b,int e,int p){
if(b==e){
if(nums[b]==p){
return b;
}
else{
return -1;
}
}
else{
int mid=(b+e+1)/2;
if(p>=nums[mid]){
return binary_search_end(nums,mid,e,p);
}
else{
return binary_search_end(nums,b,mid-1,p);
}
}
}
vector<int> searchRange(vector<int>& nums, int target) {
if(nums.empty()||target<nums[0]||target>nums[nums.size()-1]){
return {-1,-1};
}
vector<int> res;
res.push_back(binary_search_begin(nums,0,nums.size()-1,target));
res.push_back(binary_search_end(nums,0,nums.size()-1,target));
return res;
}
};
LeetCode - 34 Search for a Range
最新推荐文章于 2019-08-20 23:29:31 发布