Menu
CoddyTech

Course Schedule

Jest numCourses kursów ponumerowanych od 0 do numCourses-1. Każda para [a, b] w prerequisites oznacza, że musisz ukończyć kurs b, zanim rozpoczniesz kurs a. Zwróć true, jeśli istnieje kolejność, w której możesz ukończyć każdy kurs, a false, jeśli taka kolejność nie istnieje.

Funkcja

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
liczba kursów
prerequisitesinteger-2d-array
pary [a, b], z których każda oznacza, że kurs b poprzedza kurs a
Zwracaboolean
true, jeśli można ukończyć każdy kurs, w przeciwnym razie false

Ograniczenia

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Każda para [a, b] spełnia warunek 0 ≤ a, b < numCourses.
  • Żadna para nie pojawia się dwukrotnie.
  • A para może dwukrotnie wskazywać ten sam kurs, [a, a]. Ten kurs wymaga najpierw ukończenia samego siebie, więc nigdy nie można go ukończyć.

Przykłady

Wejście
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
Wyjście
true
Wyjaśnienie
Kurs 0 nie ma żadnych wymagań wstępnych, więc realizujesz go jako pierwszy. Dzięki temu odblokowuje się kurs 1, a kurs 1 odblokowuje zarówno 2, jak i 3, więc kolejność 0, 1, 2, 3 jest prawidłowa.

lock icon+20 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

W jednym semestrze można zrealizować dowolną liczbę kursów, pod warunkiem że wymagania wstępne każdego kursu zostały spełnione w poprzednich semestrach. Jaka jest najmniejsza liczba semestrów potrzebna do zrealizowania wszystkich kursów?

Zresetuj kod
def canFinish(numCourses, prerequisites):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

numCourses = 4
prerequisites = [[1, 0], [2, 1], [3, 1]]

Oczekiwane

true