Problems: https://leetcode.com/problems/task-scheduler/
Solution1:
k为最高频字母出现的次数,n为interval数,p为最高频率相同的字母个数
理想状态下的结果ans = (k-1) * (n+1) + p;
class Solution {
public int leastInterval(char[] tasks, int n) {
// 创建数组计算每个字母出现的频率
int[] letter = new int[26];
for(char c : tasks) {
letter[c-'A']++;
}
Arrays.sort(letter);
int sameFre = 1;
// 计算最高频率的字母个数
for(int i=0; i<25; i++) {
if(letter[i] == letter[25]) {
sameFre++;
}
}
// 计算理想结果
int ans = (letter[25]-1) * (n+1) + sameFre;
// 存在理想结果<实际task数的情况,两者取较大的即可
return Math.max(ans, tasks.length);
}
}
参考:https://www.youtube.com/watch?v=YCD_iYxyXoo

884

被折叠的 条评论
为什么被折叠?



