LeetCode 210:课程表 II | 拓扑排序
LeetCode 210:课程表 II | 拓扑排序
引言
课程表 II(Course Schedule II)是 LeetCode 第 210 题,难度为 Medium。要求返回完成课程的顺序。
算法实现
def findOrder(numCourses, prerequisites): graph = [[] for _ in range(numCourses)] indegree = [0] * numCourses for u, v in prerequisites: graph[v].append(u) indegree[u] += 1 queue = [i for i in range(numCourses) if indegree[i] == 0] result = [] while queue: node = queue.pop(0) result.append(node) for neighbor in graph[node]: indegree[neighbor] -= 1 if indegree[neighbor] == 0: queue.append(neighbor) return result if len(result) == numCourses else []复杂度分析
时间复杂度:O(V + E)
空间复杂度:O(V + E)
总结
在拓扑排序过程中记录访问顺序。
