Menu
CoddyTech

Activity Selection Problem

A atividade i vai do horário start[i] ao horário finish[i]. Uma pessoa realiza uma atividade por vez, e a próxima atividade deve começar estritamente depois que a anterior terminar: uma atividade que começa exatamente no horário em que outra termina não pode ser realizada em seguida.

Retorne o maior número de atividades que uma pessoa pode realizar.

Função

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
o horário de início de cada atividade
finishinteger-array
o horário de término de cada atividade; finish[i] corresponde a start[i]
Retornainteger
o maior número de atividades que uma pessoa pode fazer, uma após a outra

Restrições

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • Uma atividade pode começar e terminar ao mesmo tempo. Os vetores não estão ordenados.

Exemplos

Entrada
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
Saída
4
Explicação
Fazer de 10 a 13, de 14 a 19, de 21 a 22 e de 25 a 30 resulta em 4. Cinco é impossível: de 10 a 13 entra em conflito com de 12 a 16, e de 21 a 22 com de 20 a 24.
challenge icon

Para ir além

Duas pessoas agora trabalham em paralelo, cada uma realizando uma atividade por vez. Quantas atividades elas podem realizar juntas e qual pessoa deve ficar responsável por cada uma?

Redefinir código
def maxActivities(start, finish):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

start = [10, 12, 20, 14, 25, 21]
finish = [13, 16, 24, 19, 30, 22]

Saída Esperada

4