Menu
CoddyTech

Course Schedule

Il y a numCourses cours, numérotés de 0 à numCourses-1. Chaque paire [a, b] dans prerequisites signifie que tu dois terminer le cours b avant de pouvoir commencer le cours a. Renvoie true s’il existe un ordre dans lequel tu peux terminer tous les cours, et false s’il n’en existe aucun.

Fonction

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
le nombre de cours
prerequisitesinteger-2d-array
les paires [a, b], chacune indiquant que le cours b précède le cours a
Renvoieboolean
vrai si tous les cours peuvent être terminés, faux sinon

Contraintes

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Chaque paire [a, b] vérifie 0 ≤ a, b < numCourses.
  • Aucune paire n’apparaît deux fois.
  • Une paire peut nommer deux fois le même cours, [a, a]. Ce cours a besoin de lui-même en premier, donc il ne peut jamais être suivi.

Exemples

Entrée
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
Sortie
true
Explication
Le cours 0 n’a aucun prérequis, donc tu le suis en premier. Cela libère le cours 1, et le cours 1 libère à la fois les cours 2 et 3, donc l’ordre 0, 1, 2, 3 convient.

lock icon+20 tests cachés à la soumission

challenge icon

Pour aller plus loin

N’importe quel nombre de cours peut être suivi pendant un trimestre, à condition que les prérequis de chaque cours aient été terminés lors de trimestres précédents. Quel est le nombre minimal de trimestres nécessaires pour suivre tous les cours ?

Réinitialiser le code
def canFinish(numCourses, prerequisites):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Entrée

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

Attendu

true