欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

621. 任务调度器

程序员文章站 2022-03-05 13:05:18
...

题目:

621. 任务调度器
621. 任务调度器

题解:

621. 任务调度器

代码:

import java.util.Arrays;

public class code621 {

    public static int leastInterval(char[] tasks, int n) {
        int count[] = new int[26];
        // 统计词频
        for(int i = 0; i < tasks.length; i++)
        {
            count[tasks[i] - 'A']++;
        }
        // 词频排序,升序排序,count[25]是频率最高的
        Arrays.sort(count);
        int maxCount = 0;
        // 统计有多少个频率最高的字母
        for(int i = 25; i >= 0; i--)
        {
            if(count[i] != count[25])
            {
                break;
            }
            maxCount++;
        }
        // 公式算出的值可能会比数组的长度小,取两者中最大的那个
        return Math.max((count[25] - 1) * (n + 1) + maxCount,tasks.length);
    }

    public static void main(String[] args) {
        char tasks[] = { 'A', 'A', 'A', 'B', 'B', 'B' };
        int n = 2;
        int res = leastInterval(tasks, n);
        System.out.println(res);
    }
}

参考:

  1. 任务调度器
  2. Python 详解
  3. 【任务调度器】C++ 桶子_配图理解
  4. 数学思维题的简单易懂解释
  5. 621. 任务调度器–Java–解题注释应该能看懂
  6. 桶思想-简洁高效
  7. 桶思想(与官方题解三异曲同工之妙)