完成所有任务需要的最少轮数
题目 给你一个下标从 0 开始的整数数组 tasks ,其中 tasks[i] 表示任务的难度级别。在每一轮中,你可以完成 2 个或者 3 个 相同难度级别 的任务。
返回完成所有任务需要的 最少 轮数,如果无法完成所有任务,返回 -1 。
思路
贪心+哈希表 求解最优问题的四种思路: 贪心、二分(值)、广度优先搜索、动态规划
代码
class Solution {
public:
int minimumRounds(vector<int>& tasks) {
// 贪心+哈希表
// 求解最优问题的四种思路:
// 贪心、二分(值)、广度优先搜索、动态规划
unordered_map<int,int> mp;
int ans=0;
for(int task:tasks){
mp[task]++;
}
for(auto& [first,second]:mp){
if(second==1)
return -1;
else{
if(second%3==0)
ans+=(second/3);
else
ans+=(second/3)+1;
}
}
return ans;
}
};
上一篇:
IDEA上Java项目控制台中文乱码
