LeetCode-in-Java

3542. Minimum Operations to Convert All Elements to Zero

Medium

You are given an array nums of size n, consisting of non-negative integers. Your task is to apply some (possibly zero) operations on the array so that all elements become 0.

In one operation, you can select a subarray [i, j] (where 0 <= i <= j < n) and set all occurrences of the minimum non-negative integer in that subarray to 0.

Return the minimum number of operations required to make all elements in the array 0.

Example 1:

Input: nums = [0,2]

Output: 1

Explanation:

Example 2:

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

Output: 3

Explanation:

Example 3:

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

Output: 4

Explanation:

Constraints:

Solution

public class Solution {
    public int minOperations(int[] nums) {
        int[] mq = new int[nums.length];
        int idx = 0;
        int res = 0;
        for (int num : nums) {
            if (num == 0) {
                res += idx;
                idx = 0;
            } else {
                while (idx > 0 && mq[idx - 1] >= num) {
                    if (mq[idx - 1] > num) {
                        res++;
                    }
                    idx--;
                }
                mq[idx++] = num;
            }
        }
        return res + idx;
    }
}