classSolution { public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> res; res.push_back(left_bound(nums,target)); res.push_back(right_bound(nums,target)); return res; } intleft_bound(vector<int> & nums, int target){ int lo = 0; int hi = nums.size()-1; while(lo <= hi){ int mid = (lo + hi)/2; if(nums[mid] == target){ if(mid == 0 || nums[mid-1] < target) return mid; hi = mid-1; }elseif(nums[mid] < target){ lo = mid +1; }else{ hi = mid -1; } } return-1; }
intright_bound(vector<int> & nums, int target){ int lo = 0; int hi = nums.size()-1; while(lo <= hi){ int mid = (lo + hi)/2; if(nums[mid] == target && (mid == nums.size()-1 || nums[mid+1] > target)){
return mid; } elseif(nums[mid] <= target){ lo = mid +1; }else{ hi = mid -1; } } return-1; } };