task scheduler
Official answer:
1from collections import Counter
2
3class Solution:
4 def leastInterval(self, tasks, n):
5 freq = sorted(Counter([ord(x) - ord('A') for x in tasks]).values())
6 f_max = freq.pop()
7 idle_time = (f_max - 1) * n
8 while freq and idle_time > 0:
9 idle_time -= min(f_max - 1, freq.pop())
10 idle_time = idle_time if idle_time >= 0 else 0
11 return idle_time + len(tasks)
12
13tasks = ['A', 'A', 'A', 'B', 'B', 'C']
14r = Solution().leastInterval(tasks, 2)
15print(r)