给定一个有 n 个节点的有向无环图,用二维数组 graph 表示,请找到所有从 0 到 n-1 的路径并输出(不要求按顺序)。
graph 的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些结点(译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a ),若为空,就是没有下一个节点了。
输入:graph = [[4,3,1],[3,2,4],[3],[4],[]]
输出:[[0,4],[0,3,4],[0,1,3,4],[0,1,2,3,4],[0,1,4]]
解释:0号位,可以指向4,3,1
1号位,可以指向3,2,4 .....
var allPathsSourceTarget = function (brr) {
var arr = [];
var res = [];
arr.push(0);
f(brr, 0, brr.length - 1);
return res;
function f(brr, i, n) {
if (i === n) {
res.push(arr.slice());
return;
}
for (var j of brr[i]) {
arr.push(j);
f(brr, j, n);
arr.pop();
}
}
};
代码调试
console.log(allPathsSourceTarget([[4, 3, 1], [3, 2, 4], [3], [4], []]));