Programa del curso LintCode 615 Soluciones de problemas de Python

describir

Hay un total de n cursos que debes tomar, etiquetados del  0 al  n - 1.

Algunos cursos pueden tener requisitos previos, por ejemplo para tomar el curso 0 primero debes tomar el curso 1, que se expresa como un par: [0,1]

Dado el número total de cursos y una lista de pares de requisitos previos, ¿es posible terminar todos los cursos?

Muestra

Ejemplo 1:

Input: n = 2, prerequisites = [[1,0]] 
Output: true

Ejemplo 2:

Input: n = 2, prerequisites = [[1,0],[0,1]] 
Output: false

Temas relacionados

815. Plan de estudios IV 696. Plan de estudios III 616. Programación de cursos 127. Clasificación topológica

 

La primera pregunta de clasificación topológica que encontré. Escribí las respuestas después de consultar las explicaciones de los nueve capítulos. Todavía hay algunos puntos poco claros sobre este punto de conocimiento. Puedes continuar practicando preguntas relacionadas la próxima vez.

from collections import deque

class Solution:
    """
    @param: numCourses: a total of n courses
    @param: prerequisites: a list of prerequisite pairs
    @return: true if can finish all courses or false
    """
    def canFinish(self, numCourses, prerequisites):
        # write your code here
        queue = deque([])
        edges = {i:[]for i in range(numCourses)}#出度
        degrees = [0 for i in range(numCourses)]#入度
        for i,j in prerequisites:
            edges[j].append(i)
            degrees[i] += 1 
        for i in range(numCourses):
            if(degrees[i] == 0):
                queue.append(i)
                
        while(queue):
            node = queue.popleft()
            for i in edges[node]:
                degrees[i] -= 1
                if(degrees[i] == 0 ):
                    queue.append(i)
                
        if(degrees == [0 for i in range(numCourses)]):#所有点的入度为零时,即能到达所有点
            return True
        else:
            return False

 

Supongo que te gusta

Origin blog.csdn.net/zjy997/article/details/104534789
Recomendado
Clasificación