Menu
CoddyTech

Course Schedule

Hay numCourses cursos, numerados del 0 al numCourses-1. Cada par [a, b] en prerequisites significa que tienes que terminar el curso b antes de poder empezar el curso a. Devuelve true si hay un orden en el que puedes terminar todos los cursos, y false si no lo hay.

Función

canFinish(numCourses: integer, prerequisites: integer-2d-array) → boolean
numCoursesinteger
el número de cursos
prerequisitesinteger-2d-array
los pares [a, b], cada uno de los cuales significa que el curso b va antes que el curso a
Devuelveboolean
true si se pueden terminar todos los cursos, false en caso contrario

Restricciones

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Cada par [a, b] tiene 0 ≤ a, b < numCourses.
  • Ningún par aparece dos veces.
  • Un par puede nombrar el mismo curso dos veces, [a, a]. Ese curso se necesita a sí mismo primero, así que nunca se puede cursar.

Ejemplos

Entrada
numCourses = 4prerequisites = [[1, 0], [2, 1], [3, 1]]
Salida
true
Explicación
El curso 0 no tiene requisitos previos, así que lo tomas primero. Eso libera el curso 1, y el curso 1 libera tanto el 2 como el 3, así que el orden 0, 1, 2, 3 funciona.

lock icon+20 pruebas ocultas al enviar

challenge icon

Para ir más allá

En un período caben cualquier cantidad de cursos, siempre que los requisitos previos de cada curso se hayan completado en períodos anteriores. ¿Cuál es el menor número de períodos que permite cursar todos los cursos?

Restablecer código
def canFinish(numCourses, prerequisites):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Entrada

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

Esperado

true