2
* The buckets solution.4
* Time Complexity: O(n)5
* Space Complexity: O(n)7
* @param {number[]} nums10
var maximumGap = function (nums) {11
const n = nums.length;18
return Math.abs(nums[0] - nums[1]);21
let maxNum = -Infinity;22
let minNum = +Infinity;24
for (let i = 0; i < n; i++) {25
maxNum = Math.max(maxNum, nums[i]);26
minNum = Math.min(minNum, nums[i]);29
if (maxNum === minNum) {34
const averageGap = (maxNum - minNum) / k;36
const minBuckets = new Array(k);37
const maxBuckets = new Array(k);39
minBuckets[0] = minNum;40
maxBuckets[0] = minNum;42
minBuckets[k - 1] = maxNum;43
maxBuckets[k - 1] = maxNum;45
for (let i = 0; i < n; i++) {46
if (minNum === nums[i] || nums[i] === maxNum) {50
const j = Math.floor((nums[i] - minNum) / averageGap);52
minBuckets[j] = minBuckets[j] ? Math.min(minBuckets[j], nums[i]) : nums[i];53
maxBuckets[j] = maxBuckets[j] ? Math.max(maxBuckets[j], nums[i]) : nums[i];59
for (let i = 1; i < n - 1; i++) {61
largestGap = Math.max(63
minBuckets[i] - maxBuckets[prevMaxIndex]