Task Scheduler

Schedule tasks (with cooldown n between same tasks). Find minimum intervals needed.

Example 1
Input: tasks=["A","A","A","B","B","B"], n=2 → Output: 8. A→B→idle→A→B→idle→A→B
Example 2
Input: tasks=["A","A","A","B","B","B"], n=0 → Output: 6

Solution Approach

Formula: max(tasks.length, (maxCount-1)*(n+1) + countOfMaxFreqTasks)

  • Count task frequencies
  • Find max frequency maxCount
  • Count how many tasks have maxCount frequency
  • Result = max(tasks.length, (maxCount-1)*(n+1)+countMax)
Java
public int leastInterval(char[] tasks, int n) {
    int[] freq = new int[26];
    for (char t : tasks) freq[t - 'A']++;
    Arrays.sort(freq);
    int maxCount = freq[25];
    int countMax = 0;
    for (int f : freq) if (f == maxCount) countMax++;
    return Math.max(tasks.length, (maxCount - 1) * (n + 1) + countMax);
}
  • Time Complexity: O(n)
  • Space Complexity: O(1)