解题思路:将数量最多的task排在首位,以该task的间隔进行插空,计算插空能否插满,不能插满则返回带有间隔的时间数,否则返回任务总数即可。
class Solution(object):
def leastInterval(self, tasks, n):
"""
:type tasks: List[str]
:type n: int
:rtype: int
"""
if tasks==[]:
return 0
dict = {}
for t in tasks:
if t in dict:
dict[t]+=1
else:
dict[t] = 1
nums = []
for t in dict:
nums.append(dict[t])
nums.sort(reverse=True)
i = 0
k = 0
while i<len(nums) and nums[i] == nums[0]:
k += 1
i += 1
return max((nums[0]-1)*(n+1)+k,sum(nums))