Menu
CoddyTech

Task Scheduler

你有一个由大写字母组成的字符串 tasks,每个任务对应一个字母,还有一个整数 n。处理器每个时间单位运行一个任务,任务顺序由你决定,也可以空闲一个时间单位。

同一个字母的两次运行之间至少需要间隔 n 个时间单位:一个字母在时间单位 t 运行后,最早可以在时间单位 t+n+1 再次运行。请返回运行完所有任务所需的最少时间单位数。

函数

leastInterval(tasks: string, n: integer) → integer
tasksstring
这些任务,每个任务对应一个大写字母
ninteger
同一个字母的两段连续序列之间的最少单位数
返回值integer
最少的单位数量,包括空闲的单位

约束条件

  • 1 ≤ tasks.length ≤ 104
  • tasks 中只包含大写字母 A 到 Z。
  • 0 ≤ n ≤ 100

示例

输入
tasks = "CACBAC"n = 2
输出
7
解释
C 运行 3 次,每次运行之间间隔 2 个单位,因此仅 C 的运行就占用 7 个单位。顺序为 C A B C A、空闲、C,用 A 和 B 填补间隔,只需要 1 个空闲单位:7。
challenge icon

进阶

你还能返回一个长度最短的时间表吗?用字符串表示,每个空闲单元用一个 . 表示。

重置代码
def leastInterval(tasks, n):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

tasks = "CACBAC"
n = 2

预期输出

7