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
}
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))