3510. Minimum Pair Removal to Sort Array II

Hard39.2% acceptance64,978 / 165,746 submissions

Asked by 3 companies

Topics


Given an array nums, you can perform the following operation any number of times:

  • Select the adjacent pair with the minimum sum in nums. If multiple such pairs exist, choose the leftmost one.
  • Replace the pair with their sum.

Return the minimum number of operations needed to make the array non-decreasing.

An array is said to be non-decreasing if each element is greater than or equal to its previous element (if it exists).

 

Example 1:

Input: nums = [5,2,3,1]

Output: 2

Explanation:

  • The pair (3,1) has the minimum sum of 4. After replacement, nums = [5,2,4].
  • The pair (2,4) has the minimum sum of 6. After replacement, nums = [5,6].

The array nums became non-decreasing in two operations.

Example 2:

Input: nums = [1,2,2]

Output: 0

Explanation:

The array nums is already sorted.

 

Constraints:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

Hints

Hint 1
We can perform the simulation using data structures.
Hint 2
Maintain an array index and value using a map since we need to find the next and previous ones.
Hint 3
Maintain the indices to be removed using a hash set.
Hint 4
Maintain the neighbor sums with the smaller indices (set or priority queue).
Hint 5
Keep the 3 structures in sync during the removals.