力扣 LeetCode 621. 任务调度器
程序员文章站
2022-03-04 18:22:04
...
其实这是一题数学题,用贪心算法,找到其中出现次数最多的字母个数maxchars并判断有几个最大值maxNums,然后出现最多的字母之间因为有n个冷却时间,就用其他字母去填,当最大值小于等于(maxchars-1)(n+1)+maxNums时,不存在待命状态,如果超过了该值,那么值就为(maxchars-1)(n+1)+maxNums。
class Solution {
public:
int leastInterval(vector<char>& tasks, int n) {
map<char,int>m;
int maxchars=0;
int maxNums=1;
int len =tasks.size();
for(int i=0;i<len;i++){
m[tasks[i]]++;
if(maxchars< m[tasks[i]]){
maxchars=m[tasks[i]];
maxNums=1;
}
else if(maxchars== m[tasks[i]]){
maxNums++;
}
}
return max( len, (maxchars-1)*(n+1)+maxNums);
}
};