class Solution: def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: #首先计算每个课程的入度 #然后列出每个课程的后继 inDegree=[0]*numCourses nextCourses=[[] for _ in range(0,numCourses)] for relation in prerequisites: afterCourse,beforeCourse=relation[0],relation[1] inDegree[afterCourse]+=1 nextCourses[beforeCourse].append(afterCourse) #queue里面放入度为0的课程(不需要先修的课程) queue=[] for course in range(0,numCourses): if inDegree[course]==0: queue.append(course) count=0 while queue: beforeCourse=queue.pop(0) count+=1 for afterCourse in nextCourses[beforeCourse]: inDegree[afterCourse]-=1 if inDegree[afterCourse]==0: queue.append(afterCourse) if count==numCourses:return True else:return False