题目 思路 找规律 -> 完成所有任务需要的最短时间只和出现频率最高的1个或几个任务相关 最高频率的任务之间,时间间隔要为n,这期间可以做其他频率的任务或处于空闲状态(如果其他任务都已完成);详细分析见下图: code class Solution: def leastInterval(self, tasks: List[str], n: int) -> int: count = {} for i in range(len(tasks)): count[ord(tasks[i]) - 65] = count.get(ord(tasks[i]) - 65, 0) + 1 # print("count:", count) maxCount = 0 # 统计有几个频率最高的任务 # 统计词频 # 最终的最短时间只和频率最高的1个或几个任务相关 count = list(sorted(count.items(),key=lambda x: x[1], reverse=True)) for i in count: if i[1] != count[0][1]: break maxCount += 1 res = (count[0][1] - 1) * (n + 1) + maxCount print("res:", res) return max(res, len(tasks))