621. Task Scheduler

33 阅读1分钟

image.png

image.png

方法

image.png

image.png

  • 需要在两种方法得出的结果取较大的,因为填不满桶时直接返回length,会得出偏小的结果。
class Solution {
    public int leastInterval(char[] tasks, int n) {
        int[] frequency = new int[26];

        // 统计每个任务出现的次数
        for (char task : tasks) {
            frequency[task - 'A']++;
        }
        
        // 找出现次数最多的任务,比如A出现5次
        int max_freq = 0;
        for (int i : frequency) {
            max_freq = Math.max(max_freq, i);
        }

        // 有几个出现次数最多的任务?比如A出现5次,B也出现五次
        int max_count = 0;
        for (int i : frequency) {
            if (i == max_freq) {
                max_count++;
            }
        }

        return Math.max(tasks.length, (max_freq - 1) * (n + 1) + max_count);
    }
}