210.课程表 II

课程表 II

现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites 表示先修关系。返回你为了学完所有课程所安排的学习顺序。可能有多个答案,返回任意一种即可。如果不可能完成所有课程返回空数组。

解析

1
2
3
4
5
6
7
8
9
10
11
12
13
var findOrder = function (numCourses, prerequisites) {
const inDegree = new Array(numCourses).fill(0);
const graph = Array.from({ length: numCourses }, () => []);
for (const [a, b] of prerequisites) { graph[b].push(a); inDegree[a]++; }
const queue = [], result = [];
for (let i = 0; i < numCourses; i++) if (inDegree[i] === 0) queue.push(i);
while (queue.length) {
const c = queue.shift();
result.push(c);
for (const next of graph[c]) { if (--inDegree[next] === 0) queue.push(next); }
}
return result.length === numCourses ? result : [];
};

210.课程表 II
https://leetcode.lz5z.com/210.course-schedule-ii/
作者
tickli
发布于
2024年6月28日
许可协议