LeetCode--621. Task Scheduler(任務安排)Python
阿新 • • 發佈:2019-02-01
題目:
給定一串任務陣列,任務用字元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)