0797. All Paths From Source to Target
0797. All Paths From Source to Target
797. All Paths From Source to Target
Given a directed, acyclic graph of N nodes. Find all possible paths from node 0 to node N-1, and return them in any order.The graph is given as follows: the nodes are 0, 1, …, graph.length - 1. graph[i] is a list of all nodes j for which the edge (i, j) exists.Example:Input: [[1,2], [3], [3], []]Output: [[0,1,3],[0,2,3]]Explanation: The graph looks like this:0--->1| |v v2--->3There are two paths: 0 -> 1 -> 3 and 0 -> 2 -> 3.Note:The number of nodes in the graph will be in the range [2, 15].You can print different paths in any order, but you should keep the order of nodes inside one path.
思路
这题直接DFS,递归遍历就好了
-
时间复杂度 O(N)
-
空间复杂度 O(N)
代码
pub fn all_paths_source_target(graph: Vec>) -> Vec> {
let mut paths = Vec::with_capacity(graph.len());
let mut path = Vec::with_capacity(graph.len());
path.push(0);
find_N(0,&mut path,&mut paths,&graph);
return paths;}
pub
fn find_N(poient:i32,mut path:&mut Vec,mut paths:&mut Vec>,graph:&Vec>){
if poient == (graph.len()-1)
as i32 {
paths.push(path.clone());
}
else {
for next in &graph[poient as usize]{
path.push(*next);
find_N(*next,&mut path,&mut paths,& graph);
path.pop();
}
}}
-
执行用时: 12 ms
-
内存消耗: 2.4 MB
题型与相似题
题型
-
DFS
-
Graph
相似题
-
DFS
-
图
-
- Diameter of Binary Tree
代码链接
all_paths_from_source_to_target
此文原链接:
https://xiangxiaogang.com/2017/01/06/leetcode-0797/
点击阅读原文可访问
如果还没有关注我,可以长按以下二维码关注
