給定一個用字符數組表示的 CPU 須要執行的任務列表。其中包含使用大寫的 A - Z 字母表示的26 種不一樣種類的任務。任務能夠以任意順序執行,而且每一個任務均可以在 1 個單位時間內執行完。CPU 在任何一個單位時間內均可以執行一個任務,或者在待命狀態。數組
然而,兩個相同種類的任務之間必須有長度爲 n 的冷卻時間,所以至少有連續 n 個單位時間內 CPU 在執行不一樣的任務,或者在待命狀態。spa
你須要計算完成全部任務所須要的最短期。code
示例 1:blog
輸入: tasks = ["A","A","A","B","B","B"], n = 2 輸出: 8 執行順序: A -> B -> (待命) -> A -> B -> (待命) -> A -> B.
考慮 AAABBB 0 這種狀況
C++:
1 class Solution { 2 public: 3 int leastInterval(vector<char>& tasks, int n) { 4 unordered_map<char,int> m ; 5 int count = 0 ; 6 for(char c : tasks){ 7 m[c]++ ; 8 if (m[c] > count) 9 count = m[c] ; 10 } 11 int res = (count-1)*(n+1) ; 12 for(auto p : m){ 13 if (p.second == count) 14 res++ ; 15 } 16 return max(res,(int)tasks.size()) ; 17 } 18 };