1. 程式人生 > >LeetCode--621. Task Scheduler(任務安排)Python

LeetCode--621. Task Scheduler(任務安排)Python

題目:

給定一串任務陣列,任務用字元A-Z表示,每個字元代表一個任務。給定數字n,要求兩個相同任務之間間隔至少為n,間隔期間可以安排別的任務或者等待,求出完成陣列中的任務所需的最小時間間隔。(一個任務需要一個時間間隔)

解題思路:

先統計陣列中各個任務出現的次數。優先安排次數最多的任務。次數最多的任務安排完成之後所需的時間間隔為(max(次數)-1)*(n+1)+1。其餘任務直接插空即可。

程式碼(Python):

class Solution(object):
    def leastInterval(self, tasks, n):
        """
        :type tasks: List[str]
        :type n: int
        :rtype: int
        """
        output = [0]*26
        for i in tasks:
            output[ord(i)-ord('A')] = output[ord(i)-ord('A')]+1

        count = 0
        len_o = 0
        max_o = max(output)
        for i in output:
            if i==max_o:
                count = count+1
                    
        return max(len(tasks),(max_o-1)*(n+1)+count)