2021-12-21:任务调度器。 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间
2021-12-21:任务调度器。
给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。
然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。
你需要计算完成所有任务所需要的 最短时间 。
力扣621。
答案2021-12-21:
目的是让空格最少。贪心。
时间复杂度:O(N)。
空间复杂度:O(1)。
代码用golang编写。代码如下:
package main
import "fmt"
func main() {
tasks := []byte("AAABBB")
n := 2
ret := leastInterval(tasks, n)
fmt.Println(ret)
}
// ['A', 'B', 'A']
func leastInterval(tasks []byte, free int) int {
count := make([]int, 256)
// 出现最多次的任务,到底是出现了几次
maxCount := 0
for _, task := range tasks {
count[task]++
maxCount = getMax(maxCount, count[task])
}
// 有多少种任务,都出现最多次
maxKinds := 0
for task := 0; task < 256; task++ {
if count[task] == maxCount {
maxKinds++
}
}
// maxKinds : 有多少种任务,都出现最多次
// maxCount : 最多次,是几次?
// 砍掉最后一组剩余的任务数
tasksExceptFinalTeam := len(tasks) - maxKinds
spaces := (free + 1) * (maxCount - 1)
// 到底几个空格最终会留下!
restSpaces := getMax(0, spaces-tasksExceptFinalTeam)
return len(tasks) + restSpaces
// return Math.max(tasks.length, ((n + 1) * (maxCount - 1) + maxKinds));
}
func getMax(a, b int) int {
if a > b {
return a
} else {
return b
}
}
执行结果如下:

2021-12-21:任务调度器。 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间的更多相关文章
- 2021.12.21 eleveni的刷题记录
2021.12.21 eleveni的刷题记录 0. 有意思的题 P6701 [POI1997] Genotype https://www.luogu.com.cn/problem/P6701 状压优 ...
- Java实现 LeetCode 621 任务调度器(暴力大法)
621. 任务调度器 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时 ...
- [Swift]LeetCode621. 任务调度器 | Task Scheduler
Given a char array representing tasks CPU need to do. It contains capital letters A to Z where diffe ...
- LeetCode 任务调度器-Python3<八>
题目:https://leetcode-cn.com/problems/task-scheduler/description/ 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 ...
- 企业级任务调度框架Quartz(3) 一个简单的Quartz 例子
1. 一个简单的Quartz 工程 本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些.当 ...
- leetcode 621 任务调度器 Task Scheduler
给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.CPU 在 ...
- [LeetCode]621. 任务调度器(贪心)
题目 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.CP ...
- fastcgi未授权访问及任意命令执行
1. 漏洞原理 服务端使用fastcgi协议并对外网开放9000端口,攻击者可以构造fastcgi协议包内容,实现未授权访问服务端.php文件以及执行任意命令. 2. 漏洞利用 第一步 搭建vulhu ...
- 『忘了再学』Shell基础 — 7、Bash基本功能(多命令顺序执行)
目录 1.多命令执行符: 2.多命令执行符&& 3.多命令执行符|| 4.&&和||联合应用 Linux系统支持多条命令顺序执行,就是我可以依次输入多条命令后,统一按E ...
- 2021.12.06 P1450 [HAOI2008]硬币购物(组合数学+抽屉原理+DP)
2021.12.06 P1450 [HAOI2008]硬币购物(组合数学+抽屉原理+DP) https://www.luogu.com.cn/problem/P1450 题意: 共有 44 种硬币.面 ...
随机推荐
- MySql8错误记录.巨坑!File './binlog.index' not found
mysql8存在大小写敏感,若要设置不敏感,需要在mysql初始化时设置:然后库中已有项目存在,mysql备份文件夹后无法重启,还原数据后存在权限问题,更改文件夹权限后,发现仍然不行,将SELinux ...
- 05-Spring的AOP编程之基于注解开发
Spring的AOP基于注解的开发 首先在AOP配置文件中,开启注解的aop开发 <aop:aspectj-autoproxy></aop:aspectj-autoproxy> ...
- 关于不同平台、环境下64位int型的输入输出方式(转)
C语言 64位int 定义方式: Linux: long long Windows:__int64 C语言 64位int 输出方式: Linux: "%lld" ...
- PHP 计算机码、位运算、运算符优先级
计算机码 计算机在实际存储数据的时候,是采用编码规则的(二进制编码) 计算机码存储的过程: 原码.反码和补码,数值最左边一位用来充当符号位:符号为正数为0,负数为1 原码:数据本身从十进制转换为二进制 ...
- Echarts的安装和使用
安装步骤 下载相关文件 可以在该网站下载Echarts.js文件,网址在此:https://www.echartsjs.com/zh/builder.html 然后选择号自己需要用到的图形模块,点击下 ...
- mybatis-plus 开发环境在控制台打印日志
参考博客:https://blog.csdn.net/qq_32929057/article/details/109291919 # 注意在生产环境注释掉 mubatis-plus: configur ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——18.外设和IO
学习操作系统原理最好的方法是自己写一个简单的操作系统. 一.外设和I/O接口 前面我们介绍过冯·诺依曼结构包含5部分,其中输入设备和输出设备统称为外部设备,简称外设.常见的外设有鼠标.键盘.显示器.硬 ...
- 为什么wait()需要在同步代码块内使用
我们还是通过源代码和代码注释来学习这个问题 我们先来看看wait方法的注释,这里截取最根源的native方法给的注释 Causes the current thread to wait until e ...
- 当后端人员未提供接口,前端人员该怎么测试 --mock
1.回顾 2.线上的mock http://rap2.taobao.org/ https://www.easy-mock.com/ 3.线上接口文档 Swagger https://swagger.i ...
- TSDB - VictoriaMetrics 技术原理浅析
版权说明: 本文章版权归本人及博客园共同所有,转载请在文章前标明原文出处( https://www.cnblogs.com/mikevictor07/p/17258452.html ),以下内容为个人 ...