Menu
CoddyTech

Task Scheduler

Otrzymujesz ciąg znaków tasks składający się z wielkich liter, po jednej literze na zadanie, oraz liczbę całkowitą n. Procesor wykonuje jedno zadanie na jednostkę czasu, w dowolnej wybranej przez Ciebie kolejności, albo pozostaje bezczynny przez jedną jednostkę czasu.

Między dwoma wykonaniami zadań oznaczonych tą samą literą musi upłynąć co najmniej n jednostek: zadanie wykonane w jednostce t może zostać ponownie wykonane najwcześniej w jednostce t+n+1. Zwróć najmniejszą liczbę jednostek czasu potrzebną do wykonania każdego zadania.

Funkcja

leastInterval(tasks: string, n: integer) → integer
tasksstring
zadania, po jednej wielkiej literze każde
ninteger
najmniejsza liczba jednostek między dwoma wystąpieniami tej samej litery
Zwracainteger
najmniejsza liczba jednostek, wliczając bezczynne

Ograniczenia

  • 1 ≤ tasks.length ≤ 104
  • tasks zawiera tylko wielkie litery od A do Z.
  • 0 ≤ n ≤ 100

Przykłady

Wejście
tasks = "CACBAC"n = 2
Wyjście
7
Wyjaśnienie
C wykonuje się trzy razy, z dwiema jednostkami między wykonaniami, więc same jego wykonania zajmują 7 jednostek. Kolejność C A B C A, bezczynność, C wypełnia przerwy za pomocą A i B i wymaga jednej jednostki bezczynności: 7.
challenge icon

Pytanie dodatkowe

Czy możesz również zwrócić jeden harmonogram o najmniejszej długości jako ciąg znaków z . dla każdej bezczynnej jednostki?

Zresetuj kod
def leastInterval(tasks, n):
    # Wpisz tutaj kod

Test #1

Test #2

Test #3

Argumenty

tasks = "CACBAC"
n = 2

Oczekiwany wynik

7