题解 | #检测循环依赖#
检测循环依赖
https://www.nowcoder.com/practice/8dc02ad98553432a90affc3a0484910b
function findOrder( prerequisites , n ) { // write code here // 构建图 const res = [] let hasCycle = false const path = new Array(n).fill(false) const visted = new Array(n).fill(false) const buildGraph = (prerequisites,n) => { const graph = new Array(n).fill(null).map(()=>new Array()) for(let i=0;i<prerequisites.length;i++) { const edge = prerequisites[i] const from = edge[1],to = edge[0] graph[from].push(to) } return graph } const traverse = (graph,v) => { if(path[v]) hasCycle = true if(visted[v] || hasCycle) return visted[v] = true path[v] = true for(const w of graph[v]) { traverse(graph,w) } res.push(v) path[v] = false } const graph = buildGraph(prerequisites,n) for(let i=0;i<n;i++) { traverse(graph,i) } if(hasCycle) return [] res.reverse() return res }