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 empezar el curso a. Devuelve true si algún orden te permite terminar todos los cursos, y false si ninguno lo permite.

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 indica que el curso b va antes que el curso a
Devuelveboolean
verdadero si se pueden terminar todos los cursos, falso en caso contrario

Restricciones

  • 1 ≤ numCourses ≤ 105
  • 1 ≤ prerequisites.length ≤ 5000
  • Cada par [a, b] cumple 0 ≤ a, b < numCourses.
  • No hay ningún par que aparezca dos veces.
  • Un par puede nombrar dos veces el mismo curso, [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, que libera los cursos 2 y 3, así que el orden 0, 1, 2, 3 funciona.
challenge icon

Para ir más allá

Cualquier número de cursos cabe en un trimestre, siempre que los requisitos previos de cada curso se hayan completado en trimestres anteriores. ¿Cuál es el menor número de trimestres que permite cubrir todos los cursos?

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

Prueba #1

Prueba #2

Argumentos

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

Salida Esperada

true