Menu
CoddyTech

Activity Selection Problem

Aktywność i trwa od czasu start[i] do czasu finish[i]. Jedna osoba wykonuje jedną aktywność naraz, a następna aktywność musi rozpocząć się ściśle po zakończeniu poprzedniej: aktywność, która rozpoczyna się dokładnie w chwili zakończenia innej, nie może być wykonana jako następna.

Zwróć największą liczbę aktywności, które może wykonać jedna osoba.

Funkcja

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
godzina rozpoczęcia każdej aktywności
finishinteger-array
czas zakończenia każdej aktywności; finish[i] należy do start[i]
Zwracainteger
najwięcej aktywności, które jedna osoba może wykonać jedna po drugiej

Ograniczenia

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • Aktywność może rozpocząć się i zakończyć w tym samym czasie. Tablice nie są posortowane.

Przykłady

Wejście
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
Wyjście
4
Wyjaśnienie
Wykonanie zadań od 10 do 13, od 14 do 19, od 21 do 22 i od 25 do 30 daje 4. Pięć jest niemożliwe: zakres od 10 do 13 koliduje z zakresem od 12 do 16, a zakres od 21 do 22 z zakresem od 20 do 24.
challenge icon

Pytanie dodatkowe

Dwie osoby pracują teraz równolegle, wykonując każda po jednej czynności naraz. Ile czynności mogą wykonać razem i kto powinien zająć się każdą z nich?

Zresetuj kod
def maxActivities(start, finish):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

4