621. 任务调度器
程序员文章站
2022-03-05 13:05:18
...
题目:
题解:
代码:
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);
}
}