Menu
CoddyTech

Activity Selection Problem

i etkinliği, start[i] zamanında başlar ve finish[i] zamanında biter. Bir kişi aynı anda yalnızca bir etkinlik yapabilir ve sonraki etkinlik, önceki etkinlik bittikten kesinlikle daha sonra başlamalıdır: başka bir etkinliğin bittiği tam zamanda başlayan bir etkinlik, onu takip edemez.

Bir kişinin yapabileceği en fazla etkinlik sayısını döndürün.

Fonksiyon

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
her etkinliğin başlangıç zamanı
finishinteger-array
her etkinliğin bitiş zamanı; finish[i], start[i]'ye aittir
Döndürürinteger
bir kişinin art arda yapabileceği en fazla etkinlik

Kısıtlar

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • Bir etkinlik aynı anda başlayıp bitebilir. Diziler sıralı değildir.

Örnekler

Girdi
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
Çıktı
4
Açıklama
10'dan 13'e, 14'ten 19'a, 21'den 22'ye ve 25'ten 30'a yapmak 4 verir. Beş mümkün değil: 10'dan 13'e aralığı 12'den 16'ya aralığıyla, 21'den 22'ye aralığı ise 20'den 24'e aralığıyla çakışıyor.
challenge icon

Ek soru

Artık iki kişi paralel olarak çalışıyor ve her biri aynı anda bir etkinlik yapıyor. Birlikte kaç etkinlik yapabilirler ve her birini hangi kişi üstlenmeli?

Kodu sıfırla
def maxActivities(start, finish):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

4