第一题
1.题目:2357. 使数组中所有元素都等于零 - 力扣(LeetCode)
2.思路:排序后,每次数组中非零元素减去最小非零元素,记录次数
class Solution {
public:
int minimumOperations(vector<int>& nums) {
int n = nums.size();
sort(nums.begin(), nums.end());
int flag = 0;
int res = 0;
while(nums[n-1]) //直到最大的元素为0结束循环
{
int xiao;
for(int i = 0; i < n; i ++ )
{
if(nums[i] != 0)
{
xiao = nums[i];
break;
}
}
for(int i = 0; i < n; i ++ )
{
if(nums[i] != 0) nums[i] -= xiao;
} //每次减去最小的非零元素
res ++;
sort(nums.begin(), nums.end());
}
return res;
}
};
第二题
1.题目:2358. 分组的最大数量 - 力扣(LeetCode)
2.思路:假设在从小到大排序的情况下,只要保证后面一组元素大于前面一组元素的数量,即可满足题目要求
class Solution {
public:
int maximumGroups(vector<int>& grades) {
int n=grades.size();
int i=1; //第一组取一个人
int ans=0;
while(n>=i){
ans++;
n-=i;
i++;
} //保证最后一组跟前一组人数相等或者大于
return ans;
}
};