统计频次:用数组统计 26 个字母的出现次数,记最高频次为 fmax,与其相等的任务个数为 k。
关键结论:最短时间
ans=max(∣tasks∣,(fmax−1)∗(n+1)+k)
复杂度:计数与扫描均为常数级字母表规模,整体 O(∣tasks∣),空间 O(26)。
给你一个用字符串 tasks 表示的 CPU需要执行的任务列表,用字母A到Z表示,以及一个冷却周期n。每个周期允许完成一项任务。任务可以按任何顺序完成,但有一个限制:两个相同种类的任务之间必须有长度为n的冷却周期。返回完成所有任务所需要的最短周期数。
例1:对于n=2,任务列表AAABBB,其一种最优执行顺序为
A−>B−>idle−>A−>B−>idle−>A−>B
上述执行序列满足任意A或B任务间都有2个周期的冷却,最短周期数为8
例2:对于n=3,任务列表AAABBB,其一种最优执行顺序为
A−>B−>idle−>idle−>A−>B−>idle−>idle−>A−>B
上述执行序列满足任意A或B任务间都有3个周期的冷却,最短周期数为10
例3:对于n=1,任务列表ACABDB,其一种最优执行顺序为
A−>B−>C−>D−>A−>B
上述执行序列满足任意同种任务间都有1个周期的冷却,最短周期数为6
冷却周期n:2<=n<10
task字符串长度:长度<400
task字符串:仅包含大写字母
成所有任务所需的最短周期数
输入
2
6
AAABBB
输出
8