Published: Sep 21, 2022
This problem looks like a simulation required. However, if we carefully read the problem, it turns out the answer is just a number of times. Think what will go on from the problem description. The number of unique non-zero values is the answer.
You are given a non-negative integer array
nums. In one operation, you must:
- Choose a positive integer
xis less than or equal to the smallest non-zero element in
xfrom every positive element in
Return the minimum number of operations to make every element in nums equal to 0.
1 <= nums.length <= 100
0 <= nums[i] <= 100
Example 1 Input: nums = [1,5,0,3,5] Output: 3 Explanation: In the first operation, choose x = 1. Now, nums = [0,4,0,2,4]. In the second operation, choose x = 2. Now, nums = [0,2,0,0,2]. In the third operation, choose x = 2. Now, nums = [0,0,0,0,0].
Example 2 Input: nums =  Output: 0 Explanation: Each element in nums is already 0 so no operations are needed.
The answer is the number of unique non-zero values, so take a set at first. If 0 doesn’t exist in the set, the length of the set is the answer. Otherwise subtract 1 from the length of the set.
class MakeArrayZeroBySubtractingEqualAmounts: def minimumOperations(self, nums: List[int]) -> int: ss = set(nums) return len(ss) if 0 not in ss else len(ss) - 1