Задача: 621. Task Scheduler
Вам дан массив задач процессора, каждая из которых представлена буквами от A до Z, и время охлаждения, n. Каждый цикл или интервал позволяет завершить одну задачу. Задачи могут быть выполнены в любом порядке, но есть ограничение: одинаковые задачи должны быть разделены не менее чем n интервалами из-за времени охлаждения. Верните минимальное количество интервалов, необходимое для выполнения всех задач.
Пример:
Input: tasks = ["A","A","A","B","B","B"], n = 2
Output: 8
👨💻 Алгоритм:
1⃣Подсчитайте количество каждой задачи и найдите максимальное количество вхождений (maxFreq).
2⃣Вычислите количество интервалов, необходимых для задач с maxFreq: (maxFreq - 1) * (n + 1) + countMaxFreq, где countMaxFreq - количество задач, имеющих maxFreq.
3⃣Верните максимум между вычисленным значением и длиной массива задач, поскольку некоторые задачи могут заполнять интервал до n.
😊 Решение:
from collections import Counter
def leastInterval(tasks, n):
task_counts = Counter(tasks)
max_freq = max(task_counts.values())
count_max_freq = list(task_counts.values()).count(max_freq)
return max(len(tasks), (max_freq - 1) * (n + 1) + count_max_freq)
👉Новости 👉Платформа