Maximum Product After K Increments LeetCode solution in JavaScript

1
var maximumProduct = function (nums, k) {
2
let MOD = Math.pow(10, 9) + 7;
3

4
// build a new minimum priority queue
5
// LeetCode loads MinPriorityQueue by default, no need to implement again
6
let queue = new MinPriorityQueue();
7
for (let i = 0; i < nums.length; i++) {
8
queue.enqueue(nums[i], nums[i]);
9
}
10

11
// To maximize the product, take the smallest element out
12
// add 1 to it and add it back to the queue
13
let count = 0;
14
while (count < k && queue.size() > 0) {
15
let { element, priority } = queue.dequeue();
16
queue.enqueue(element + 1, priority + 1);
17
count += 1;
18
}
19

20
// calculate the product
21
let result = 1;
22
let elements = queue.toArray().map((a) => a.element);
23
for (let i = 0; i < elements.length; i++) {
24
result = (result * elements[i]) % MOD;
25
}
26

27
return result;
28
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0