【精】LintCode领扣算法问题答案:945. 任务计划
发布日期:2021-06-30 17:13:37 浏览次数:2 分类:技术文章

本文共 1426 字,大约阅读时间需要 4 分钟。

945. 任务计划:

描述

给定一个字符串,表示CPU需要执行的任务。 这个字符串由大写字母A到Z构成,不同的字母代表不同的任务。完成任务不需要按照给定的顺序。 每项任务都可以在一个单位时间内被完成。 在每个单位时间,CPU可以选择完成一个任务或是不工作。

但是,题目会给定一个非负的冷却时间“n”,表示在执行两个“相同的任务”之间,必须至少有n个单位时间,此时CPU不能执行该任务,只能执行其他任务或者不工作。

您需要返回CPU完成所有给定任务所需的最少单位时间数。

  • 任务数量的范围为 [1, 10000].
  • 整数 n 的范围为 [0, 100].

样例 1

输入: 	tasks = ['A','A','A','B','B','B'], n = 2输出: 	8解释:	A -> B -> idle -> A -> B -> idle -> A -> B.

样例 2

输入: 	tasks = ['A','A','A','B','B','B'], n = 1输出: 	6解释:	A -> B -> A -> B -> A -> B.


文章目录


题解

public class Solution {
/** * @param tasks: the given char array representing tasks CPU need to do * @param n: the non-negative cooling interval * @return: the least number of intervals the CPU will take to finish all the given tasks */ public int leastInterval(char[] tasks, int n) {
// write your code here // 计数 int[] ch = new int[26]; for (char c : tasks) {
ch[c - 'A']++; } // 排序 Arrays.sort(ch); // 统计次数最多的任务有几种(会在最后一个执行周期执行,且不需要再进行冷却) int i = 24; while (i >= 0 && ch[i] == ch[25]) {
i--; } // ch[25] - 1因为最后一个周期和n没关系,不需要冷却 // 当任务数量都比较小,任务种类比较多,这时候不需要冷却,因为并不会遇到一个周期内各种任务执行完,还不够n,所以这时候总的执行时间片就是任务总数 return Math.max(tasks.length, (ch[25] - 1) * (n + 1) + (25 - i)); }}

最后说两句

非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

作者水平有限,如果文章内容有不准确的地方,请指正。

希望小伙伴们都能每天进步一点点。

声明

本文由博客原创,转载请注明来源,谢谢~

转载地址:https://le-yi.blog.csdn.net/article/details/114828840 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【精】LintCode领扣算法问题答案:1871 · 最大时刻
下一篇:【精】LintCode领扣算法问题答案:1303. H指数 II

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月30日 10时24分42秒