LC621 - Task Scheduler
Problem
Example
Solution
MaxHeap
def leastInterval(self, tasks: List[str], n: int) -> int:
taskList = {}
for task in tasks:
if task in taskList:
taskList[task] = taskList[task] + 1
else:
taskList[task] = 1
time = 0
# Python doesn't have maxHeap, so use a minHeap and use neg value.
maxHeap = [-count for count in taskList.values()]
heapq.heapify(maxHeap)
queue = deque()
while maxHeap or queue:
time += 1
if maxHeap:
count = 1 + heapq.heappop(maxHeap)
# if nonzero
if count:
queue.append([count, time + n])
if queue and queue[0][1] == time:
heapq.heappush(maxHeap, queue.popleft()[0])
return timeLast updated