Explore diversas soluciones LeetCode en Python, C++, JavaScript, SQL y TypeScript. Ideal para preparación de entrevistas, aprendizaje y práctica de código en múltiples lenguajes de programación. Enlace de repositorio de Github
Hay un total de numCursos
cursos que tienes que tomar, etiquetados desde 0
a numCursos-1
.Se te da una matriz requisitos previos
dónde requisitos previos [i] = [a i , b i ]
indica que tu debe tomar curso b yo
primero si quieres tomar el curso AI
.
- Por ejemplo, la pareja
[0, 1]
, indica que tomar rumbo0
primero tienes que tomar el curso1
.
Devolver verdadero
Si puedes terminar todos los cursos, de lo contrario, regresa. FALSO
.
Ejemplo 1:
Aporte: numCursos = 2, requisitos previos = [[1,0]] Producción: verdadero Explicación: Hay un total de 2 cursos a tomar. Para tomar el curso 1 debes haber terminado el curso 0. Entonces es posible.
Ejemplo 2:
Aporte: numCursos = 2, requisitos previos = [[1,0],[0,1]] Producción: FALSO Explicación: Hay un total de 2 cursos a tomar. Para tomar el curso 1 debes haber terminado el curso 0, y para tomar el curso 0 también debes haber terminado el curso 1. Entonces es imposible.
Restricciones:
1 <= numCursos <= 2000
0 <= requisitos previos.longitud <= 5000
requisitos previos [i]. longitud == 2
0 <= a i , bi < numCursos
- Todos los requisitos previos de los pares [i] son único.
Pitón
de colecciones importar deque de escribir importar clase de lista Solución: def canFinish(self, numCourses: int, prerrequisitos: List[List[int]]) -> bool: ingrado = [0] * numCourses adj = [[] para _ en rango (númCursos)] para prerrequisito en prerrequisitos: adj[prerrequisito[1]].append(prerrequisito[0]) grado[prerrequisito[0]] += 1 cola = deque() para i en rango(númCursos): si grado[ i] == 0: queue.append(i) nodoVisitado = 0 mientras cola: nodo = queue.popleft() nodoVisitado += 1 para vecino en adj[nodo]: grado[vecino] -= 1 si grado[vecino] = = 0: queue.append(vecino) devuelve nodoVisitado == numCursos