[Med ]621. Task Scheduler

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))

你可能感兴趣的:([Med ]621. Task Scheduler)