当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。

任务调度器

中等leastInterval()
时间限制 2000 ms内存限制 128 MB复杂度要求 时间 O(n),空间 O(1)

任务调度器

给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母代表一种不同的任务。任务可以按任意顺序执行,每个单位时间完成一个任务。

存在一个冷却时间 n:两个相同种类的任务之间,必须至少有 n 个单位时间的间隔(这些间隔时间里可以安排其他任务或处于待命状态)。

请返回完成所有任务所需要的最短时间。

约定

  • tasks 只由大写英文字母组成。
  • 在满足冷却要求的前提下,你可以让 CPU 待命。

输入

  • tasks:任务数组,长度 [1, 10^4]
  • n:冷却间隔,[0, 100]

输出

完成所有任务所需的最短单位时间数。

示例一

输入:

tasks = ["A","A","A","B","B","B"], n = 2

输出:

8

解释:一种可行安排为 A -> B -> 待命 -> A -> B -> 待命 -> A -> B。

示例二

输入:

tasks = ["A","A","A","B","B","B"], n = 0

输出:

6

示例三

输入:

tasks = ["A","A","A","A","A","A","B","C","D","E","F","G"], n = 2

输出:

16

复杂度要求

  • 时间 O(n),空间 O(1)(任务种类数固定为 26)。
Loading...

输入

[["A","A","A","B","B","B"],2]

预期输出

8
自定义用例