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