算法与思路:
class Solution {
public:
int leastInterval(vector<char>& tasks, int n) {
unordered_map<char, int> freq;//char 为key int为value
for (char ch: tasks) {
++freq[ch];
}
// 最多的执行次数 max_element语法参照下面两个链接
//https://www.cnblogs.com/ChrisCoder/p/10171134.html
//https://blog.csdn.net/hanshihao1336295654/article/details/82747931
int maxExec = max_element(freq.begin(), freq.end(), [](const auto& u, const auto& v) {
return u.second < v.second;
})->second;
// 具有最多执行次数的任务数量
//accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
//https://blog.csdn.net/u011499425/article/details/52756242
// [=] 表示传值
// [&] 表示传入引用
// [&a] 表示传入 a 变量的引用,而[a]表示传入值。
//https://www.jianshu.com/p/6482fbd3abdf
int maxCount = accumulate(freq.begin(), freq.end(), 0, [=](int acc, const auto& u) {
return acc + (u.second == maxExec);
});
return max((maxExec - 1) * (n + 1) + maxCount, static_cast<int>(tasks.size()));
}
};