完成所有任务需要的最少轮数
题目 给你一个下标从 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项目控制台中文乱码