字母代表等待运行的任务。每2个相同任务之间需要有n个间隔。求运行所需的最短时间。
分析后得出关键在于数量最多的任务。最终使用的公式是建立在n>0的基础上的。但是没有考虑到n=0的特殊情况。
class Solution {
public:
int leastInterval(vector<char>& tasks, int n) {
vector<int> cnt(26, 0);
for (char task : tasks) {
++cnt[task - 'A'];
}
sort(cnt.begin(), cnt.end());
int i = 25, mx = cnt[25], len = tasks.size();
while (i >= 0 && cnt[i] == mx) --i;
return max(len, (mx - 1) * (n + 1) + 25 - i);
}
};