题目简介:
给你一个非负整数数组 nums
。在一步操作中,你必须:
- 选出一个正整数
x
,x
需要小于或等于 nums
中 最小 的 非零 元素。
nums
中的每个正整数都减去 x
。
返回使 nums
中所有元素都等于 0
需要的 最少 操作数。
示例 1:
1 2 3 4 5 6
| 输入: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] 。
|
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 100
思路:
本质上就是求数组中不同的正整数数量,因此利用哈希表存储出现过的正整数即可。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution { public: int minimumOperations(vector<int>& nums) { int sum = 0; unordered_map<int, int> map;
for(auto& num : nums){
if(num > 0 && map[num] == 0){
sum++; map[num] = 1; } }
return sum; } };
|