时间复杂度(O(n*m)),思想:排序
class Solution:
def leastInterval(self, tasks: [str], n: int) -> int:
tasks_count = [0] * 26
for task in tasks:
tasks_count[ord(task) - 65] += 1
interval_count, n = 0, n + 1
while True:
tasks_count = [i for i in tasks_count if i > 0]
tasks_count.sort(reverse=True)
tasks_count_len = len(tasks_count)
if tasks_count_len == 0: break
if tasks_count[0] > 1 and n>tasks_count_len:
interval_count += n - tasks_count_len
for i in range(n if n< tasks_count_len else tasks_count_len):
if tasks_count[i] > 0:
tasks_count[i], interval_count = tasks_count[i] - 1, interval_count + 1
else:
interval_count += n - i
break
return interval_count