课程表
from typing import *
from collections import *
class Solution:
def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:
in_order=defaultdict(lambda :0)#保存每个点的入度
graph=defaultdict(lambda :[])
for lis in prerequisites:
graph[lis[1]].append(lis[0])
in_order[lis[0]]+=1
que=deque()
for k in range(numCourses):
if in_order[k]==0:
que.append(k)
res=[]
while que:
x=que.pop()
res.append(x)
for k in graph[x]:
in_order[k]-=1
if in_order[k]==0:
que.append(k)
return res if len(res)==numCourses else []
if __name__ == '__main__':
res=Solution().findOrder(4,[[1,0],[2,0],[3,1],[3,2]])
print(res)