Advertisement
nikunjsoni

164

May 30th, 2021
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. class Solution {
  2.    
  3. struct bucket{
  4.     int maxVal=INT_MIN, minVal=INT_MAX;
  5.     bool used=false;
  6. };
  7.    
  8. public:
  9.     int maximumGap(vector<int>& nums) {
  10.         if(nums.empty() || nums.size()<2)
  11.             return 0;
  12.         int mine = *min_element(nums.begin(), nums.end());
  13.         int maxe = *max_element(nums.begin(), nums.end());
  14.         int bucketSize = max(1, (maxe-mine)/int(nums.size()-1));
  15.         int bucketNum = (maxe-mine)/bucketSize+1;
  16.        
  17.         vector<bucket> buckets(bucketNum);
  18.        
  19.         for(auto num: nums){
  20.             int idx = (num-mine)/bucketSize;
  21.             buckets[idx].used = true;
  22.             buckets[idx].minVal = min(num, buckets[idx].minVal);
  23.             buckets[idx].maxVal = max(num, buckets[idx].maxVal);
  24.         }
  25.        
  26.         int prevMax = mine, ans = 0;
  27.         for(auto bucket: buckets){
  28.             if(!bucket.used)
  29.                 continue;
  30.             ans = max(ans, bucket.minVal-prevMax);
  31.             prevMax = bucket.maxVal;
  32.         }
  33.         return ans;
  34.     }
  35. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement