leetcode-Search for a Range-34
输入一个递增序列和一个target,找出序列中target的上界和下界
二分,实现lower_bound和upper_bound,要注意的是没有找到target的情况的判断:low==high,或者nums[high-1]!=target(high初始设为nums.size())
1 class Solution { 2 public: 3 vector<int> searchRange(vector<int>& nums, int target) { 4 int l=0,r=nums.size()-1; 5 int low=-1,high=nums.size(); 6 while(l<=r){ 7 int mid=(l+r)>>1; 8 if(nums[mid]>=target){ 9 low=mid; 10 r=mid-1; 11 } 12 else l=mid+1; 13 } 14 l=0,r=nums.size()-1; 15 while(l<=r){ 16 int mid=(l+r)>>1; 17 if(nums[mid]>target){ 18 high=mid; 19 r=mid-1; 20 } 21 else l=mid+1; 22 } 23 vector<int> v; 24 if(low==high||nums[high-1]!=target){ 25 v.push_back(-1); 26 v.push_back(-1); 27 return v; 28 } 29 v.push_back(low); 30 v.push_back(high-1); 31 return v; 32 } 33 };