博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 797. All Paths From Source to Target
阅读量:7098 次
发布时间:2019-06-28

本文共 1802 字,大约阅读时间需要 6 分钟。

Problem

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.

Solution - DFS

class Solution {    public List
> allPathsSourceTarget(int[][] graph) { List
> res = new ArrayList<>(); List
temp = new ArrayList<>(); int firstNode = 0; temp.add(firstNode); dfs(graph, firstNode, temp, res); return res; } private void dfs(int[][] graph, int node, List
temp, List
> res) { if (node == graph.length-1) { res.add(new ArrayList<>(temp)); return; } for (int neighbor: graph[node]) { temp.add(neighbor); dfs(graph, neighbor, temp, res); temp.remove(temp.size()-1); } }}

Solution - BFS

class Solution {    public List
> allPathsSourceTarget(int[][] graph) { int n = graph.length; List
> res = new ArrayList<>(); Deque
> queue = new ArrayDeque<>(); queue.offer(Arrays.asList(0)); while (!queue.isEmpty()) { List
cur = queue.poll(); int size = cur.size(); if (cur.get(size-1) == n-1) { res.add(cur); continue; } for (int node: graph[cur.get(size-1)]) { List
next = new ArrayList<>(cur); next.add(node); queue.offer(next); } } return res; }}

转载地址:http://dfeql.baihongyu.com/

你可能感兴趣的文章
android使用系统相机拍照返回照片,并通过webservice上传到服务器上
查看>>
Python入门——简介1
查看>>
nexus的部署
查看>>
分享一个即插即用的私藏缓动动画JS小算法
查看>>
阿里云docker
查看>>
div+css+js实现鼠标略过自动切换的选项卡
查看>>
matlab-基础 figure 关闭所有的figure
查看>>
使用google插件使你的网站支持多语言
查看>>
在Cisco路由器上完整实现OSPF跨网段下IPSec Tunnel模式×××
查看>>
SEO网站优化需要注意的细节
查看>>
简单使用ansible-playbook
查看>>
Linux iptables防火墙详解 + 配置抗DDOS***策略实战
查看>>
【iOS Tips】合并 UIImage
查看>>
java webservice开发和调用(jdk1.5+eclipse3.4 + tomcat5.5+axis1.4+xfire1.2.6)
查看>>
计算机存储数据方式
查看>>
Hadoop入门(7)_NameNode的工作特点
查看>>
状态模式
查看>>
[置顶] Jquery之ShowLoading遮罩组件
查看>>
ACE 格式化输出到console
查看>>
display:none与visibility:hidden的区别。
查看>>