Menu
CoddyTech

Job Sequencing Problem

Você recebe n trabalhos como dois arrays: o trabalho i rende profit[i] se for concluído até o prazo deadline[i]. Cada trabalho leva uma unidade de tempo, você executa um trabalho por vez começando no tempo 0 e pode pular qualquer trabalho. Um trabalho com prazo 2 pode ser executado de 0 a 1 ou de 1 a 2.

Retorne o maior lucro total que você pode obter.

Função

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
o prazo até o qual cada tarefa deve ser concluída, de 1 a n
profitinteger-array
quanto cada trabalho rende; profit[i] pertence a deadline[i]
Retornainteger
o maior lucro total de trabalhos que podem ser concluídos até seus prazos

Restrições

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, em que n é o número de tarefas
  • 1 ≤ profit[i] ≤ 105
  • Os arrays não estão ordenados. Vários trabalhos podem ter o mesmo prazo ou lucro.

Exemplos

Entrada
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
Saída
120
Explicação
Apenas um dos dois trabalhos com prazo 1 cabe, então execute o que vale 50. O trabalho que vale 30 termina então no prazo 2, e o trabalho que vale 40, no prazo 3: 50 + 30 + 40 = 120.
challenge icon

Para ir além

E se o trabalho i levar duration[i] unidades de tempo em vez de uma? Escolher primeiro o trabalho mais lucrativo ainda resulta no melhor total?

Redefinir código
def jobSequencing(deadline, profit):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

deadline = [3, 1, 2, 3, 1]
profit = [40, 35, 30, 25, 50]

Saída Esperada

120