1
var maximumProduct = function (nums, k) {2
let MOD = Math.pow(10, 9) + 7;4
// build a new minimum priority queue5
// LeetCode loads MinPriorityQueue by default, no need to implement again6
let queue = new MinPriorityQueue();7
for (let i = 0; i < nums.length; i++) {8
queue.enqueue(nums[i], nums[i]);11
// To maximize the product, take the smallest element out12
// add 1 to it and add it back to the queue14
while (count < k && queue.size() > 0) {15
let { element, priority } = queue.dequeue();16
queue.enqueue(element + 1, priority + 1);20
// calculate the product22
let elements = queue.toArray().map((a) => a.element);23
for (let i = 0; i < elements.length; i++) {24
result = (result * elements[i]) % MOD;