Guest User

Untitled

a guest
Jun 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. int maximumGap(vector<int> arr) {
  2. if(arr.empty() || arr.size() < 2) return 0;
  3. int size = arr.size();
  4. int maxNum = *max_element(arr.begin(), arr.end());
  5. int minNum = *min_element(arr.begin(), arr.end());
  6.  
  7. int gap = (maxNum - minNum - 1) / (size - 1) + 1;
  8.  
  9. vector<int> bucketsMin(size - 1, INT_MAX);
  10. vector<int> bucketsMax(size - 1, INT_MIN);
  11.  
  12. int buckInd;
  13. for (int i = 0; i < size; i++) {
  14. if (arr[i] != maxNum && arr[i] != minNum) {
  15. buckInd = (arr[i] - minNum) / gap;
  16. bucketsMin[buckInd] = min(bucketsMin[buckInd], arr[i]);
  17. bucketsMax[buckInd] = max(bucketsMax[buckInd], arr[i]);
  18. }
  19. }
  20. int result = INT_MIN;
  21. int previous = minNum;
  22. for (int i = 0; i < size - 1; i++) {
  23. if (bucketsMin[i] == INT_MAX && bucketsMax[i] == INT_MIN) continue;
  24. result = max(maxGap, bucketsMin[i] - previous);
  25. previous = bucketsMax[i];
  26. }
  27. result = max(result, maxNum - previous);
  28. return result;
  29. }
Add Comment
Please, Sign In to add comment