#3066

Minimum Operations to Exceed Threshold Value II

Medium
ArrayHeap (Priority Queue)SimulationHeap (Priority Queue)Simulation
LeetCode ↗

Approaches

Brute ForceOptimal
Complexity Comparison
Brute ForceOptimal Solution
Time
O(n²)
O(n log n)
Space
O(1)
O(n)
💡

Intuition

Time O(n log n)Space O(n)

Using a priority queue (min-heap) allows us to efficiently retrieve and remove the two smallest elements, significantly reducing the time complexity of the operations.

⚙️

Algorithm

4 steps
  1. 1Step 1: Initialize a min-heap with all elements from nums.
  2. 2Step 2: While the smallest element in the heap is less than k and there are at least two elements, extract the two smallest elements.
  3. 3Step 3: Compute the new element using the formula min(x, y) * 2 + max(x, y) and insert it back into the heap.
  4. 4Step 4: Count the number of operations performed and return it.
solution.py15 lines
1# Full working Python code
2import heapq
3
4def min_operations(nums: List[int], k: int) -> int:
5    heapq.heapify(nums)
6    operations = 0
7    while nums and nums[0] < k:
8        if len(nums) < 2:
9            return -1
10        x = heapq.heappop(nums)
11        y = heapq.heappop(nums)
12        new_elem = min(x, y) * 2 + max(x, y)
13        heapq.heappush(nums, new_elem)
14        operations += 1
15    return operations

Complexity note: Using a priority queue allows us to efficiently manage the smallest elements, leading to O(log n) time for each insertion and removal, resulting in O(n log n) overall.

  • 1Using a priority queue allows for efficient retrieval of the smallest elements, reducing the time complexity.
  • 2The operation effectively increases the minimum values in the array, which is crucial for reaching the threshold.

Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.