LeetCode 210:课程表 II | 拓扑排序

📅 2026/7/14 14:17:40 👁️ 阅读次数 📝 编程学习
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)

总结

在拓扑排序过程中记录访问顺序。