Skip to content

Commit 3b4bfed

Browse files
committed
Runtime: 232 ms (Top 93.36%) | Memory: 57.4 MB (Top 48.67%)
1 parent 9b3f9e3 commit 3b4bfed

File tree

1 file changed

+47
-46
lines changed

1 file changed

+47
-46
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,71 @@
1+
// Runtime: 232 ms (Top 93.36%) | Memory: 57.4 MB (Top 48.67%)
12
/**
23
* The buckets solution.
3-
*
4-
* Time Complexity: O(n)
4+
*
5+
* Time Complexity: O(n)
56
* Space Complexity: O(n)
6-
*
7+
*
78
* @param {number[]} nums
89
* @return {number}
910
*/
1011
var maximumGap = function(nums) {
11-
const n = nums.length
12+
const n = nums.length
1213

13-
if (n < 2) {
14-
return 0
15-
}
14+
if (n < 2) {
15+
return 0
16+
}
1617

17-
if (n < 3) {
18-
return Math.abs(nums[0] - nums[1])
19-
}
18+
if (n < 3) {
19+
return Math.abs(nums[0] - nums[1])
20+
}
2021

21-
let maxNum = -Infinity
22-
let minNum = +Infinity
22+
let maxNum = -Infinity
23+
let minNum = +Infinity
2324

24-
for (let i = 0; i < n; i++) {
25-
maxNum = Math.max(maxNum, nums[i])
26-
minNum = Math.min(minNum, nums[i])
27-
}
25+
for (let i = 0; i < n; i++) {
26+
maxNum = Math.max(maxNum, nums[i])
27+
minNum = Math.min(minNum, nums[i])
28+
}
2829

29-
if (maxNum === minNum) {
30-
return 0
31-
}
30+
if (maxNum === minNum) {
31+
return 0
32+
}
3233

33-
const k = n - 1
34-
const averageGap = (maxNum - minNum) / k
34+
const k = n - 1
35+
const averageGap = (maxNum - minNum) / k
3536

36-
const minBuckets = new Array(k)
37-
const maxBuckets = new Array(k)
37+
const minBuckets = new Array(k)
38+
const maxBuckets = new Array(k)
3839

39-
minBuckets[0] = minNum
40-
maxBuckets[0] = minNum
40+
minBuckets[0] = minNum
41+
maxBuckets[0] = minNum
4142

42-
minBuckets[k - 1] = maxNum
43-
maxBuckets[k - 1] = maxNum
43+
minBuckets[k - 1] = maxNum
44+
maxBuckets[k - 1] = maxNum
4445

45-
for (let i = 0; i < n; i++) {
46-
if (minNum === nums[i] || nums[i] === maxNum) {
47-
continue
48-
}
46+
for (let i = 0; i < n; i++) {
47+
if (minNum === nums[i] || nums[i] === maxNum) {
48+
continue
49+
}
4950

50-
const j = Math.floor((nums[i] - minNum) / averageGap)
51+
const j = Math.floor((nums[i] - minNum) / averageGap)
5152

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]
54-
}
53+
minBuckets[j] = minBuckets[j] ? Math.min(minBuckets[j], nums[i]) : nums[i]
54+
maxBuckets[j] = maxBuckets[j] ? Math.max(maxBuckets[j], nums[i]) : nums[i]
55+
}
5556

56-
let largestGap = 0
57-
let prevMaxIndex = 0
57+
let largestGap = 0
58+
let prevMaxIndex = 0
5859

59-
for (let i = 1; i < n - 1; i++) {
60-
if (minBuckets[i]) {
61-
largestGap = Math.max(largestGap, minBuckets[i] - maxBuckets[prevMaxIndex])
62-
}
60+
for (let i = 1; i < n - 1; i++) {
61+
if (minBuckets[i]) {
62+
largestGap = Math.max(largestGap, minBuckets[i] - maxBuckets[prevMaxIndex])
63+
}
6364

64-
if (maxBuckets[i]) {
65-
prevMaxIndex = i
66-
}
67-
}
65+
if (maxBuckets[i]) {
66+
prevMaxIndex = i
67+
}
68+
}
6869

69-
return largestGap
70+
return largestGap
7071
}

0 commit comments

Comments
 (0)