621. Task Scheduler
Input: tasks = ["A","A","A","B","B","B"], n = 2
Output: 8
Explanation: A -> B -> idle -> A -> B -> idle -> A -> B.int leastInterval(vector<char>& tasks, int n) { // time: O(N); space: O(1)
vector<int> count(26, 0);
int mx = 0, maxCount = 0;
for (char task : tasks) {
++count[task - 'A'];
if (mx == count[task - 'A']) {
++maxCount;
} else if (mx < count[task - 'A']) {
mx = count[task - 'A'];
maxCount = 1;
}
}
int partCount = mx - 1;
int partLength = n - (maxCount - 1);
int emptySlots = partCount * partLength;
int availableTasks = tasks.size() - mx * maxCount;
int idles = max(0, emptySlots - availableTasks);
return tasks.size() + idles;
// return max((int)tasks.size(), (mx - 1) * (n + 1) + maxCount);
}Last updated