Skip to content

Commit 7e091a3

Browse files
authored
Update 2163-minimum-difference-in-sums-after-removal-of-elements.js
1 parent 4877130 commit 7e091a3

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

2163-minimum-difference-in-sums-after-removal-of-elements.js

+48
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,51 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
const minimumDifference = function(nums) {
6+
const n = nums.length, len = n / 3
7+
const maxCompare = (p, c) => { return p === c ? 0 : (p > c ? -1 : 1)}
8+
const minCompare = (p, c) => { return p === c ? 0 : (p < c ? -1 : 1)}
9+
const maxHeap = new PriorityQueue({compare: maxCompare})
10+
const minHeap = new PriorityQueue({compare: minCompare})
11+
const pre = Array(n).fill(Infinity), suffix = Array(n).fill(-Infinity)
12+
for(let i = 0, sum = 0; i < 2 * len; i++) {
13+
const cur = nums[i]
14+
maxHeap.enqueue(cur)
15+
sum += cur
16+
if(maxHeap.size() > len) {
17+
const tmp = maxHeap.dequeue()
18+
sum -= tmp
19+
}
20+
if(maxHeap.size() === len) {
21+
pre[i] = sum
22+
}
23+
}
24+
25+
for(let i = n - 1, sum = 0; i >= len; i--) {
26+
const cur = nums[i]
27+
minHeap.enqueue(cur)
28+
sum += cur
29+
if(minHeap.size() > len) {
30+
const tmp = minHeap.dequeue()
31+
sum -= tmp
32+
}
33+
if(minHeap.size() === len) {
34+
suffix[i] = sum
35+
}
36+
}
37+
38+
// console.log(pre, suffix)
39+
let res = Infinity
40+
for(let i = len - 1; i < n - len; i++) {
41+
res = Math.min(res, pre[i] - suffix[i + 1])
42+
}
43+
return res
44+
};
45+
46+
// another
47+
48+
149
/**
250
* @param {number[]} nums
351
* @return {number}

0 commit comments

Comments
 (0)