##### Welcome to Subscribe On Youtube

Formatted question description: https://leetcode.ca/all/2357.html

# 2357. Make Array Zero by Subtracting Equal Amounts

• Difficulty: Easy.
• Related Topics: Array, Hash Table, Sorting, Heap (Priority Queue), Simulation.
• Similar Questions: Contains Duplicate.

## Problem

You are given a non-negative integer array nums. In one operation, you must:

• Choose a positive integer x such that x is less than or equal to the smallest non-zero element in nums.

• Subtract x from every positive element in nums.

Return the **minimum number of operations to make every element in nums equal to **0.

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 = [0]
Output: 0
Explanation: Each element in nums is already 0 so no operations are needed.


Constraints:

• 1 <= nums.length <= 100

• 0 <= nums[i] <= 100

## Solution (Java, C++, Python)

• class Solution {
public int minimumOperations(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int a : nums) {
if (a > 0) {
}
}
return set.size();
}
}

############

class Solution {
public int minimumOperations(int[] nums) {
boolean[] s = new boolean[101];
s[0] = true;
int ans = 0;
for (int x : nums) {
if (!s[x]) {
++ans;
s[x] = true;
}
}
return ans;
}
}

• class Solution:
def minimumOperations(self, nums: List[int]) -> int:
s = {v for v in nums if v}
return len(s)

############

# 2357. Make Array Zero by Subtracting Equal Amounts
# https://leetcode.com/problems/make-array-zero-by-subtracting-equal-amounts

class Solution:
def minimumOperations(self, nums: List[int]) -> int:
return len(set([x for x in nums if x != 0]))


• class Solution {
public:
int minimumOperations(vector<int>& nums) {
bool s[101]{};
s[0] = true;
int ans = 0;
for (int& x : nums) {
if (!s[x]) {
++ans;
s[x] = true;
}
}
return ans;
}
};

• func minimumOperations(nums []int) (ans int) {
s := [101]bool{true}
for _, x := range nums {
if !s[x] {
s[x] = true
ans++
}
}
return
}

• function minimumOperations(nums: number[]): number {
const set = new Set(nums);
set.delete(0);
return set.size;
}


• use std::collections::HashSet;
impl Solution {
pub fn minimum_operations(nums: Vec<i32>) -> i32 {
let mut set = nums.iter().collect::<HashSet<&i32>>();
set.remove(&0);
set.len() as i32
}
}



Explain:

nope.

Complexity:

• Time complexity : O(n).
• Space complexity : O(n).