思路:无环 -> dfs找路径,直到到达n - 1
注意:记忆化dfs(保存某节点到n-1的路径)并不会优化,这是因为构造ans的复杂度和直接dfs的复杂度是一样的,并不会真正优化 ->自己尝试写过代码了, 用了记忆化甚至更慢了。。。
class Solution {
public:
vector<vector<int>> ans;
vector<int> path;
void dfs(vector<vector<int>>& graph, int index) {
int n = graph.size();
if (index == n - 1) ans.push_back(path);
for (auto& a : graph[index]) {
path.push_back(a);
dfs(graph, a);
path.pop_back();
}
}
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
path.push_back(0);
dfs(graph, 0);
return ans;
}
};