# 2357.使数组中所有元素都等于零

## 问题描述
[2357. 使数组中所有元素都等于零 (Easy)](https://leetcode.cn/problems/make-array-zero-by-subtracting-equal-amounts/)

给你一个非负整数数组 `nums` 。在一步操作中，你必须：

- 选出一个正整数 `x` ， `x` 需要小于或等于 `nums` 中 **最小** 的 **非零** 元素。
- `nums` 中的每个正整数都减去 `x`。

返回使 `nums` 中所有元素都等于 `0` 需要的 **最少** 操作数。

**示例 1：**

```
输入：nums = [1,5,0,3,5]
输出：3
解释：
第一步操作：选出 x = 1 ，之后 nums = [0,4,0,2,4] 。
第二步操作：选出 x = 2 ，之后 nums = [0,2,0,0,2] 。
第三步操作：选出 x = 2 ，之后 nums = [0,0,0,0,0] 。
```

**示例 2：**

```
输入：nums = [0]
输出：0
解释：nums 中的每个元素都已经是 0 ，所以不需要执行任何操作。

```

**提示：**

- `1 <= nums.length <= 100`
- `0 <= nums[i] <= 100`

## 解题思路
贪心：不考虑数组中的零元素，每次必定减去数组中的最小非零元素，因此操作次数实际上就是数组中非零元素的种类数。

## 代码
```cpp
class Solution {
  public:
    int minimumOperations(vector<int> &nums) {
        unordered_map<int, int> mp;
        for (int &num : nums) {
            if (num != 0) {
                mp[num]++;
            }
        }
        return mp.size();
    }
};
```
