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 poter iniziare il corso a. Restituisci true se esiste un ordine in cui puoi 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 significa che il corso b viene prima del corso a
Restituisceboolean
vero se ogni corso può essere completato, falso altrimenti

Vincoli

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Ogni coppia [a, b] ha 0 ≤ a, b < numCourses.
  • Nessuna coppia compare due volte.
  • Una coppia può indicare due volte lo stesso corso, [a, a]. Quel corso ha bisogno di sé stesso prima, 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, e il corso 1 sblocca sia il 2 che il 3, quindi l'ordine 0, 1, 2, 3 funziona.

lock icon+20 test nascosti all’invio

challenge icon

Per approfondire

È possibile inserire un numero qualsiasi di corsi in un semestre, purché i prerequisiti di ogni 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
Casi di test

Caso 1

Caso 2

Input

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

Atteso

true