Schedule tasks (with cooldown n between same tasks). Find minimum intervals needed.
Input: tasks=["A","A","A","B","B","B"], n=2 → Output: 8. A→B→idle→A→B→idle→A→B
Input: tasks=["A","A","A","B","B","B"], n=0 → Output: 6
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)
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)