第一题:使数组中所有元素都等于零
思路::创建哈希表,记录数组中不同元素的个数,然后相加即可。
int minimumOperations(int* nums, int numsSize){
int ans[101];
memset(ans, 0, sizeof(int) * 101);
for(int i = 0; i < numsSize; i++)
{
ans[nums[i]] = 1;
}
int conut = 0;
for(int i = 1; i < 101; i++)
{
conut += ans[i];
}
return conut;
}
第二题:分组的最大数量
思路:升序排列后,i+1个数的数组一定比i个数的数组各元素和大,
那么 第1个数组分1个元素,第2个数组分2个元素,第i个数组分i个元素即可
class Solution {
public:
int maximumGroups(vector<int>& grades) {
sort(grades.begin(),grades.end());
int res=0;
int m=0,n=0;
m=1;
res=1;
for(int i=1;i<grades.size();++i){
++n;
if(n>m ){
++res;
m=n;
n=0;
}
}
return res;
}
};