207. Course Schedule
solution
class Solution:
def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool:
graph = collections.defaultdict(list)
degree = [0] * numCourses # 也可以使用collections.defaultdict(int)
for (cur, pre) in prerequisites:
graph[pre].append(cur) # bfs往后走所以记录后面
degree[cur] += 1 # 后面是否可开始依赖前面
start_course = [i for (i, d) in enumerate(degree) if d == 0]
queue = collections.deque(start_course)
visited = 0
while queue:
cur = queue.popleft()
visited += 1
for adj in graph[cur]: # graph记录后续可以开始的课程
degree[adj] -= 1 # 后续课程的前依赖 - 1
if not degree[adj]:
queue.append(adj)
return visited == numCoursesFollow-up
调度类
拓扑排序类
Last updated