Advertisement
nikunjsoni

34

May 14th, 2021
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     vector<int> searchRange(vector<int>& nums, int target) {
  4.         return {findLeftmost(nums, target), findRightmost(nums, target)};
  5.     }
  6.    
  7.     int findLeftmost(vector<int>& nums, int target){
  8.         int l=0, r=nums.size();
  9.         if(!r) return -1;
  10.         while(l<r){
  11.             int mid = (l+r)/2;
  12.             if(nums[mid] < target)
  13.                 l = mid+1;
  14.             else
  15.                 r = mid;
  16.         }
  17.         if(l < 0 || l >= nums.size() || nums[l] != target) return -1;
  18.         return l;
  19.     }
  20.    
  21.     int findRightmost(vector<int>& nums, int target){
  22.         int l=0, r=nums.size();
  23.         if(!r) return -1;
  24.         while(l<r){
  25.             int mid = (l+r)/2;
  26.             if(nums[mid] > target)
  27.                 r = mid;
  28.             else
  29.                 l = mid+1;
  30.         }
  31.         if(r-1 < 0 || r-1 >= nums.size() || nums[r-1] != target) return -1;
  32.         return r-1;
  33.     }
  34.    
  35. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement