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
}
}

执行结果如下:


左神java代码

2021-12-21:任务调度器。 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间的更多相关文章

  1. 2021.12.21 eleveni的刷题记录

    2021.12.21 eleveni的刷题记录 0. 有意思的题 P6701 [POI1997] Genotype https://www.luogu.com.cn/problem/P6701 状压优 ...

  2. Java实现 LeetCode 621 任务调度器(暴力大法)

    621. 任务调度器 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时 ...

  3. [Swift]LeetCode621. 任务调度器 | Task Scheduler

    Given a char array representing tasks CPU need to do. It contains capital letters A to Z where diffe ...

  4. LeetCode 任务调度器-Python3<八>

    题目:https://leetcode-cn.com/problems/task-scheduler/description/ 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 ...

  5. 企业级任务调度框架Quartz(3) 一个简单的Quartz 例子

    1. 一个简单的Quartz 工程     本示例应用比起众所周知的 System.out.println("Hello world from Quartz") 来还是要有趣些.当 ...

  6. leetcode 621 任务调度器 Task Scheduler

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

  7. [LeetCode]621. 任务调度器(贪心)

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

  8. fastcgi未授权访问及任意命令执行

    1. 漏洞原理 服务端使用fastcgi协议并对外网开放9000端口,攻击者可以构造fastcgi协议包内容,实现未授权访问服务端.php文件以及执行任意命令. 2. 漏洞利用 第一步 搭建vulhu ...

  9. 『忘了再学』Shell基础 — 7、Bash基本功能(多命令顺序执行)

    目录 1.多命令执行符: 2.多命令执行符&& 3.多命令执行符|| 4.&&和||联合应用 Linux系统支持多条命令顺序执行,就是我可以依次输入多条命令后,统一按E ...

  10. 2021.12.06 P1450 [HAOI2008]硬币购物(组合数学+抽屉原理+DP)

    2021.12.06 P1450 [HAOI2008]硬币购物(组合数学+抽屉原理+DP) https://www.luogu.com.cn/problem/P1450 题意: 共有 44 种硬币.面 ...

随机推荐

  1. 用VUE框架开发的准备

    使用VUE框架编写项目的准备工作 防止我几天不打代码,忘记怎么打了 下载小乌龟拉取码云项目文件,用于码云仓库代码提交与拉取(可以不安装) 小乌龟要设置你的码云账号 密码 在控制面版 中 凭证里可以修改 ...

  2. vue路由守卫并向后台发送token

    vue代码 //全局路由首位:当路由发生异常首先执行的方法 router.beforeEach((to, from, next) => { //是否被认证 var isAuthenticated ...

  3. python安装第三方库出现“'pip' is not recognized ...”报错及其解决

    命令行安装第三方库,直接 通过命令 pip install XXX 会报错: 'pip' is not recognized as an internal or external command, o ...

  4. Linux系统下祼机安装mysql8.0和docker mysql 8.0 性能差异对比~

    环境准备 准备两台服务器环境,配置相同,分别安装Centos7,mysql8.0,docker mysql 8.0 准备测试代码 public class Chat { public static l ...

  5. App 用户新体验——Agora Native SDK 3.4.0

    声网Agora Native SDK 3.4.0 本月已正式上线.新版本不仅增加了更丰富的实时美声音效.屏幕共享.虚拟节拍器等功能,同时在 SDK 的稳定性.兼容性及安全合规上做了大幅度升级,希望为 ...

  6. 使用 Agora SDK 开发 React Native 视频通话App

    在 React Native 的应用中,从头开始添加视频通话功能是很复杂的.要保证低延迟.负载平衡,还要注意管理用户事件状态,非常繁琐.除此之外,还必须保证跨平台的兼容性. 当然有个简单的方法可以做到 ...

  7. 等价类计数:Burnside引理和Polya定理 阐述和相关例题

    本人不确保结果正确性. 类似的题集也很多,比如 https://ac.nowcoder.com/acm/contest/27275#question 我做了部分题目的题解 https://www.cn ...

  8. 解读 Servlet 源码:GenericServlet,ServletConfig,ServletContext

    解读 Servlet 源码:GenericServlet,ServletConfig,ServletContext 每博一文案 人活着,就得随时准备经受磨难.他已经看过一些书,知道不论是普通人还是了不 ...

  9. webgl 系列 —— 绘制猫

    其他章节请看: webgl 系列 绘制猫 上文我们了解了如何绘制渐变彩色三角形,明白了图形装配.光栅化,以及片元着色器计算片元的颜色. 现在如果让你绘制如下一只猫.难道绘制很多三角形,然后指定它们的颜 ...

  10. Yaml入门与使用

    一.入门 1.概念:  yml是YAML("YAML Ain't a Markup Language)语言文件,以数据为中心,而不是一标记语言为重点,比json,xml更适合做配置文件. 为 ...