题目
解法
这题关键在于计算所需要添加的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;
}
};