Skip to main content

3066.js

/** ------------------------------------------------------------------------------
*
* 3066. Minimum Operations to Exceed Threshold Value II
* Topics: Heap(Priority Queue)
* https://leetcode.com/problems/minimum-operations-to-exceed-threshold-value-ii/description/?envType=daily-question&envId=2025-02-13
*
------------------------------------------------------------------------------ */
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var minOperations = function (nums, k) {
const minHeap = new MinPriorityQueue({ priority: (x) => x })

for (const num of nums) {
minHeap.enqueue(num)
}

let operations = 0

while (minHeap.front().element < k) {
let x = minHeap.dequeue().element
let y = minHeap.dequeue().element

let newElement = x * 2 + y
minHeap.enqueue(newElement)
operations++
}

return operations
}

/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
var minOperations = function (nums, k) {
nums.sort((a, b) => b - a)
let arr = [],
operationTime = 0,
arrPos = 0
while ((nums.length > 0 && nums[nums.length - 1] < k) || (arr.length > 0 && arr[arrPos] < k)) {
let min1, min2
if (nums[nums.length - 1] && !(nums[nums.length - 1] > arr[arrPos])) min1 = nums.pop()
else {
min1 = arr[arrPos]
arrPos++
}
if (nums[nums.length - 1] && !(nums[nums.length - 1] > arr[arrPos])) min2 = nums.pop()
else {
min2 = arr[arrPos]
arrPos++
}
arr.push(min1 * 2 + min2)
operationTime++
}
return operationTime
}

console.log(minOperations([2, 11, 10, 1, 3], 10))