三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

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

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)

总结

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

← 返回列表