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