Menu
CoddyTech

Job Sequencing Problem

Du erhältst n Jobs als zwei Arrays: Job i bringt profit[i] ein, wenn er bis zum Zeitpunkt deadline[i] abgeschlossen ist. Jeder Job dauert eine Zeiteinheit, du führst jeweils einen Job aus, beginnend bei Zeitpunkt 0, und kannst beliebige Jobs auslassen. Ein Job mit Deadline 2 kann von 0 bis 1 oder von 1 bis 2 ausgeführt werden.

Gib den größtmöglichen Gesamtprofit zurück, den du erzielen kannst.

Funktion

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
der Zeitpunkt, bis zu dem jeder Auftrag abgeschlossen sein muss, von 1 bis n
profitinteger-array
was jeder Auftrag einbringt; profit[i] gehört zu deadline[i]
Gibt zurückinteger
der größtmögliche Gesamtgewinn aus Aufträgen, die alle fristgerecht abgeschlossen werden können

Einschränkungen

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, wobei n die Anzahl der Aufträge ist
  • 1 ≤ profit[i] ≤ 105
  • Die Arrays sind nicht sortiert. Mehrere Aufträge können dieselbe Frist oder denselben Gewinn haben.

Beispiele

Eingabe
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
Ausgabe
120
Erklärung
Nur einer der beiden Aufträge mit Deadline 1 passt, also führe den mit dem Wert 50 aus. Der Auftrag mit dem Wert 30 wird dann zu seiner Deadline 2 fertig und der Auftrag mit dem Wert 40 zu seiner Deadline 3: 50 + 30 + 40 = 120.
challenge icon

Weiterführende Frage

Was ist, wenn Job i statt einer Zeiteinheit duration[i] Zeiteinheiten dauert? Ergibt es immer noch die beste Gesamtsumme, wenn man zuerst den profitabelsten Job erledigt?

Code zurücksetzen
def jobSequencing(deadline, profit):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

120