Description
给定一个字符串,表示CPU需要执行的任务。 这个字符串由大写字母A到Z构成,不同的字母代表不同的任务。完成任务不需要按照给定的顺序。 每项任务都可以在一个单位时间内被完成。 在每个单位时间,CPU可以选择完成一个任务或是不工作。
但是,题目会给定一个非负的冷却时间“n”,表示在执行两个“相同的任务”之间,必须至少有n个单位时间,此时CPU不能执行该任务,只能执行其他任务或者不工作。
您需要返回CPU完成所有给定任务所需的最少单位时间数。
Solution
O(N) 注意最后一行有max tasks和前面的计算值取max(因为如果task种类>K,即可排with 0 idle)
class Solution:
def leastInterval(self, tasks: List[str], n: int) -> int:
c_dict = {}
for t in tasks:
if t not in c_dict:
c_dict[t] =1
else:
c_dict[t] +=1
max_freq = max(c_dict.values())
p=0
for i in c_dict.values():
if i == max_freq:
p +=1
return max((n+1)*(max_freq-1)+p,len(tasks))