leetcodeカリキュラムII python

1192 ワード

「leetcodeカリキュラムpython」に基づいて少し変更
class Solution(object):
    def findOrder(self, numCourses, prerequisites):
        deleted=[]
        dict_graph={}
        for i in range(numCourses):
            dict_graph[i]={}
        for prereq in prerequisites:
            dict_graph[prereq[0]][prereq[1]]=1
        def del0indegree(dict_graph,deleted):
            tobedel=[]
            for node in dict_graph:
                if len(dict_graph[node])==0:
                    tobedel.append(node)
            deleted=deleted+tobedel
            for tobedel_i in tobedel:
                del dict_graph[tobedel_i]
            for node in dict_graph:
                for tobedel_i in tobedel:
                    if tobedel_i in dict_graph[node]:
                        del dict_graph[node][tobedel_i]
            return deleted
            
        def has0indegree(dict_graph):
            for node in dict_graph:
                if len(dict_graph[node].keys())==0:
                    return True
            return False
        while has0indegree(dict_graph):
            deleted=del0indegree(dict_graph,deleted)
        return deleted if len(dict_graph.keys())==0 else []