Menu
CoddyTech

Task Scheduler

Você recebe uma string tasks de letras maiúsculas, uma letra por tarefa, e um número inteiro n. Um processador executa uma tarefa por unidade de tempo, em qualquer ordem que você escolher, ou fica ocioso durante uma unidade.

Entre duas execuções da mesma letra, são necessárias pelo menos n unidades: uma letra executada na unidade t pode ser executada novamente, no mínimo, na unidade t+n+1. Retorne o menor número de unidades necessário para executar todas as tarefas.

Função

leastInterval(tasks: string, n: integer) → integer
tasksstring
as tarefas, uma letra maiúscula cada
ninteger
o menor número de unidades entre duas sequências da mesma letra
Retornainteger
o menor número de unidades, incluindo as ociosas

Restrições

  • 1 ≤ tasks.length ≤ 104
  • tasks contém apenas letras maiúsculas de A a Z.
  • 0 ≤ n ≤ 100

Exemplos

Entrada
tasks = "CACBAC"n = 2
Saída
7
Explicação
C é executado três vezes com duas unidades entre as execuções, então apenas suas execuções ocupam 7 unidades. A ordem C A B C A, ocioso, C preenche os intervalos com A e B e precisa de uma unidade ociosa: 7.
challenge icon

Para ir além

Você também pode retornar um cronograma de menor duração, como uma string com um . para cada unidade ociosa?

Redefinir código
def leastInterval(tasks, n):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

tasks = "CACBAC"
n = 2

Saída Esperada

7