LeetCode 207:课程表 | 拓扑排序

📅 2026/7/14 6:30:54 👁️ 阅读次数 📝 编程学习
LeetCode 207:课程表 | 拓扑排序

LeetCode 207:课程表 | 拓扑排序

引言

课程表(Course Schedule)是 LeetCode 第 207 题,难度为 Medium。题目要求判断是否可能完成所有课程的学习,即检测有向图是否有环。

算法实现

def canFinish(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] visited = 0 while queue: node = queue.pop(0) visited += 1 for neighbor in graph[node]: indegree[neighbor] -= 1 if indegree[neighbor] == 0: queue.append(neighbor) return visited == numCourses

复杂度分析

时间复杂度:O(V + E)
空间复杂度:O(V + E)

总结

拓扑排序可以检测有向图是否有环。