Menu
CoddyTech

Course Schedule

Ci sono numCourses corsi, numerati da 0 a numCourses-1. Ogni coppia [a, b] in prerequisites significa che devi completare il corso b prima di iniziare il corso a. Restituisci true se esiste un ordine che ti permette di completare tutti i corsi, e false se non esiste.

Funzione

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
il numero di corsi
prerequisitesinteger-2d-array
le coppie [a, b], ciascuna delle quali indica che il corso b viene prima del corso a
Restituisceboolean
true se ogni corso può essere completato, false altrimenti

Vincoli

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Ogni coppia [a, b] soddisfa 0 ≤ a, b < numCourses.
  • Nessuna coppia compare due volte.
  • Una coppia può indicare due volte lo stesso corso, [a, a]. Quel corso dovrebbe essere completato prima di se stesso, quindi non può mai essere seguito.

Esempi

Input
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
Output
true
Spiegazione
Il corso 0 non ha prerequisiti, quindi lo segui per primo. Questo sblocca il corso 1, che sblocca il 2 e il 3, quindi l’ordine 0, 1, 2, 3 funziona.
challenge icon

Per approfondire

È possibile inserire un numero qualsiasi di corsi in un semestre, purché i prerequisiti di ciascun corso siano stati completati nei semestri precedenti. Qual è il numero minimo di semestri necessario per completare tutti i corsi?

Ripristina il codice
def canFinish(numCourses, prerequisites):
    # Scrivi il codice qui

Test #1

Test #2

Argomenti

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

Output atteso

true