方法
- 需要在两种方法得出的结果取较大的,因为填不满桶时直接返回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);
}
}