统计频次:用数组统计 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,其一种最优执行顺序为