第一题:使数组中所有元素都等于零
思路:用哈希表储存元素,满足不为0且第一次出现则结果加一即可
class Solution {
public:
int minimumOperations(vector<int>& nums) {
int res = 0;
unordered_set<int> ans;
for(int i = 0;i < nums.size(); i++)
if(nums[i] != 0 && ans.find(nums[i]) == ans.end()) ans.insert(nums[i]),res++;
return res;
}
};
第二题:分组的最大数量
思路:脑筋急转弯,题目解释给想复杂了,将数组排序后,由于每组个数从1开始不断累加且或者要比前者和大,那么排序后,后面的肯定比前面的大,即得最多分组数
class Solution {
public:
int maximumGroups(vector<int>& grades) {
sort(grades.begin(),grades.end());
int res = 0;
int n = grades.size(), i = 1;
while(i <= n){
res++;
n -= i;
i++;
}
return res;
}
};