LeetCode-621:任务调度器(桶方法)python实现

python代码如下:

class Solution(object):
    def leastInterval(self, tasks, n):
        """
        :type tasks: List[str]
        :type n: int
        :rtype: int
        """
        count,time = collections.Counter(tasks), 0
        most = count.most_common(1)[0][1]
        for i in count.values():
            if i == most: 
                time += 1
        output = (most - 1) * (n + 1) + time
        return output if output >= len(tasks) else len(tasks)

我的理解

  • 任务管理器的运行时间关键要看因为冷却要求导致的CPU空闲时间。可以直观想象,如果各种任务的数量差别不是很大,任务的种类又很多的话,我们就更有机会妥善安排任务执行顺序,将空闲时间降至0.因此,CPU的空闲时间关键要看任务次数最多的任务的执行情况。
  • 我们依据冷却时间n的要求,构建n+1个桶子,桶子中的任务按层逐个执行。可以想象,我们可以把最多的任务放在一个筒子里,以防止出现未冷却就执行的情况。
    具体图解见【任务调度器】C++ 桶子_配图理解
posted on 2020-12-05 15:00  小强要努力变乔  阅读(129)  评论(0编辑  收藏  举报