Menu
CoddyTech

Task Scheduler

On vous donne une chaîne tasks composée de lettres majuscules, une lettre par tâche, ainsi qu’un entier n. Un processeur exécute une tâche par unité de temps, dans l’ordre de votre choix, ou reste inactif pendant une unité.

Deux exécutions de la même lettre doivent être séparées d’au moins n unités : une lettre exécutée à l’unité t peut être exécutée de nouveau au plus tôt à l’unité t+n+1. Renvoyez le nombre minimal d’unités nécessaires pour exécuter toutes les tâches.

Fonction

leastInterval(tasks: string, n: integer) → integer
tasksstring
les tâches, une lettre majuscule chacune
ninteger
le plus petit nombre d’unités entre deux séquences de la même lettre
Renvoieinteger
le plus petit nombre d’unités, y compris les unités inactives

Contraintes

  • 1 ≤ tasks.length ≤ 104
  • tasks ne contient que les lettres majuscules A à Z.
  • 0 ≤ n ≤ 100

Exemples

Entrée
tasks = "CACBAC"n = 2
Sortie
7
Explication
C s’exécute trois fois avec deux unités entre chaque exécution, donc ses seules exécutions s’étendent sur 7 unités. L’ordre C A B C A, une unité d’inactivité, C comble les intervalles avec A et B et nécessite une unité d’inactivité : 7.
challenge icon

Pour aller plus loin

Peux-tu également renvoyer un ordonnancement de longueur minimale, sous forme de chaîne avec un . pour chaque unité d’inactivité ?

Réinitialiser le code
def leastInterval(tasks, n):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

tasks = "CACBAC"
n = 2

Résultat attendu

7