Leetcode 621. Task Scheduler (cpp)

题目

在这里插入图片描述

解法

这题关键在于计算所需要添加的idle time,而这个idle time由出现最多次的task决定。不过证明就有点麻烦了,可以看这边:https://leetcode.com/problems/task-scheduler/discuss/824421/A-math-proof

class Solution {
public:
    int leastInterval(vector<char>& tasks, int n) {
        vector<int> freq(26,0);
        for(char task : tasks){
            freq[task - 'A'] += 1;
        }
        sort(freq.rbegin(),freq.rend());
        int idle_time = (freq[0] - 1) * n;
        int i = 1;
        while(i < 26 && idle_time > 0){
            idle_time -= min(freq[0] - 1, freq[i]);
            i++;
        }
        idle_time = max(0,idle_time);
        return tasks.size() + idle_time;
    }
};
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页