621. 任务调度器

给定一个用字符数组表示的 CPU 需要执行的任务列表。其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。CPU 在任何一个单位时间内都可以执行一个任务,或者在待命状态。

然而,两个相同种类的任务之间必须有长度为 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。

你需要计算完成所有任务所需要的最短时间。

示例 :

输入:tasks = [“A”,“A”,“A”,“B”,“B”,“B”], n = 2

输出:8

解释:A -> B -> (待命) -> A -> B -> (待命) -> A -> B.

提示:

任务的总个数为 [1, 10000]。

n 的取值范围为 [0, 100]。

PS:

A-X-X-A-X-X-A;

这是间隔两个

count【25】-1是因为最后一个我放进maxcount了

n+1是因为我虽然间隔两个但是其实我是三个一组

class Solution {
public int leastInterval(char[] tasks, int n) {
int[] count = new int[26];
for (int i = 0; i < tasks.length; i++) {
count[tasks[i]-'A']++;
}//统计词频
Arrays.sort(count);//词频排序,升序排序,count[25]是频率最高的
int maxCount = 0;
//统计有多少个频率最高的字母
for (int i = 25; i >= 0; i--) {
if(count[i] != count[25]){
break;
}
maxCount++;
}
//n小于种类的时候,会比长度小
//公式算出的值可能会比数组的长度小,取两者中最大的那个
return Math.max((count[25] - 1) * (n + 1) + maxCount , tasks.length);
}
}

最新文章

  1. Db2数据库的备份和恢复
  2. Java笔记4-do while循环,break,修饰符,方法的调用
  3. Unexpected namespace prefix &quot;xmlns&quot; found for tag Linear Layout
  4. mybatis动态SQL中的set标签的使用
  5. 添加 SecondaryNameNode
  6. Cookie禁用了,Session还能用吗?
  7. 【技术贴】解决xp下Microsoft.SqlServer.Management.PSProvider.dll
  8. 选择排序(Selection Sort)
  9. Java的参数传递是「值传递」还是「引用传递」?
  10. JAVA解决前端跨域问题。
  11. C++ - 定义无双引号的字符串宏
  12. Learning to rank相关的pointwise,pairwise,listwise
  13. 18B树、B++树和Trie树
  14. Unity 如何在打包的时候执行一些逻辑
  15. 【Cocos2d-Js基础教学(1)JS -Mac配置篇】
  16. jenkins 参数化构建过程
  17. Codeforces Round #245 (Div. 1) B. Working out dp
  18. js 动态创建变量
  19. 如何最快地实现 ALTER TABLE
  20. Spring--Quartz 任务调度的配置详解

热门文章

  1. 【Spark】帮你搞明白怎么通过SparkSQL整合Hive
  2. u-boot 移植(二)创建新平台的板级支持
  3. Kali:系统安装之后进行所需配置
  4. 配置centos7 java环境
  5. linux 修改时间同步到BIOS
  6. 暴力破解-HTTP Basic认证
  7. Android 编译系统
  8. Intellij Idea2018破解教程(激活到2099年)
  9. Chipmunk-js物理引擎学习笔记
  10. 手写一个简版 asp.net core