【leetcode14】

207. 课程表

  1. class Solution:
  2.     def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
  3.         rd=[0]*numCourses               #入度
  4.         dic=collections.defaultdict(list)
  5.         res=0
  6.         for i in prerequisites:
  7.             rd[i[0]]+=1
  8.             dic[i[1]].append(i[0])        #更新入度和后继课程
  9.         q=collections.deque([i for i in range(numCourses) if rd[i]==0])                                     #初始化入度为0可学课程
  10.         while q:
  11.             a=q.popleft()
  12.             res+=1
  13.             for i in dic[a]:
  14.                 rd[i]-=1                    #弹出入度为0的课程,后继课程入度减一
  15.                 if rd[0]==0:
  16.                     q.append(i)          #入度为0弹出
  17.         return res==numCourses

发表评论