欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

力扣 LeetCode 621. 任务调度器

程序员文章站 2022-03-04 18:22:04
...

力扣 LeetCode 621. 任务调度器
其实这是一题数学题,用贪心算法,找到其中出现次数最多的字母个数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);
        
    }
};