Menu
CoddyTech

Job Sequencing Problem

Sana iki dizi olarak n iş veriliyor: i. iş, deadline[i] zamanına kadar tamamlanırsa profit[i] kazandırır. Her iş bir zaman birimi sürer, aynı anda bir iş yaparsın ve 0 zamanında başlarsın; istediğin işleri atlayabilirsin. Son teslim tarihi 2 olan bir iş, 0 ile 1 arasında veya 1 ile 2 arasında yapılabilir.

Elde edebileceğin en yüksek toplam kârı döndür.

Fonksiyon

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
her işin tamamlanması gereken zaman, 1 ile n arasında
profitinteger-array
her işin ne kadar kazandırdığı; profit[i], deadline[i] öğesine aittir
Döndürürinteger
Son teslim tarihlerine kadar tamamlanabilecek işlerin en yüksek toplam kârı

Kısıtlar

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, burada n iş sayısıdır
  • 1 ≤ profit[i] ≤ 105
  • Diziler sıralı değildir. Birden fazla işin son teslim tarihi veya kârı aynı olabilir.

Örnekler

Girdi
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
Çıktı
120
Açıklama
Son tarihi 1 olan iki işten yalnızca biri sığar, bu yüzden değeri 50 olanı çalıştır. Değeri 30 olan iş daha sonra son tarihi 2'de, değeri 40 olan iş ise son tarihi 3'te tamamlanır: 50 + 30 + 40 = 120.
challenge icon

Ek soru

Ya iş i, bir birim zaman yerine duration[i] birim zaman alıyorsa? Önce en kârlı işi yapmak yine de en yüksek toplam kazancı sağlar mı?

Kodu sıfırla
def jobSequencing(deadline, profit):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

120