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ść, która pozwala ukończyć wszystkie kursy, a false, jeśli takiej kolejności nie ma.

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 odbywa się przed kursem a
Zwracaboolean
true, jeśli każdy kurs można ukończyć, 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, by najpierw ukończyć sam 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 bierzesz go jako pierwszy. To odblokowuje kurs 1, który odblokowuje kursy 2 i 3, więc kolejność 0, 1, 2, 3 jest prawidłowa.
challenge icon

Pytanie dodatkowe

Ile kursów zmieści się w jednym semestrze, o ile wymagania wstępne każdego kursu zostały spełnione w poprzednich semestrach? Ile semestrów wystarczy, by zrealizować wszystkie kursy?

Zresetuj kod
def canFinish(numCourses, prerequisites):
    # Wpisz kod tutaj

Test #1

Test #2

Argumenty

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

Oczekiwany wynik

true