文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
任务调度器
解题思路
贪心。
先排个数最多的任务 A,在 A 的冷却时间内插入其他任务,先计算前 n-1 行 n 的间隔的时间大小,再计算和最大次数相同的字母个数,然后累加进 ret。最后在 tasks 的长度和 ret 中取较大的一个。
代码实现
const leastInterval = (tasks: string[], n: number): number => {
let arr: number[] = new Array(26).fill(0);
for (let c of tasks) {
arr[c.charCodeAt(0) - "A".charCodeAt(0)]++;
}
let max: number = Math.max(...arr);
let ret: number = (max - 1) * (n + 1);
for (let i = 0; i < 26; i++) {
if (arr[i] === max) {
ret++;
}
}
return Math.max(ret, tasks.length);
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论