Keshawn_lu's Blog

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

字数统计: 253阅读时长: 1 min
2023/02/24 Share

题目简介:

给你一个非负整数数组 nums 。在一步操作中,你必须:

  • 选出一个正整数 xx 需要小于或等于 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;
}
};
CATALOG
  1. 1. 题目简介:
  2. 2. 思路:
  3. 3. 代码如下: