前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LeetCode:所有可能的路径_797

LeetCode:所有可能的路径_797

作者头像
Yuyy
发布2022-06-28 20:40:29
发布2022-06-28 20:40:29
34500
代码可运行
举报
运行总次数:0
代码可运行

思路

  • 很基本的深搜,还没有环,省了isVisited判断
  • go的数组还是不太熟悉,在求得一条路线时,需要加入到路线集合中,这里需要深拷贝,没留意到,导致出现了一些意料之外的问题,看了题解才发现的
  • go的闭包挺香的,不用使劲传参,或者使用全局变量

题目

给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序

graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph[i][j]存在一条有向边)。

示例 1:

代码语言:javascript
代码运行次数:0
运行
复制
输入:graph = [[1,2],[3],[3],[]]
输出:[[0,1,3],[0,2,3]]
解释:有两条路径 0 -> 1 -> 3 和 0 -> 2 -> 3

示例 2:

代码语言:javascript
代码运行次数:0
运行
复制
输入: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]]

提示:

  • n == graph.length
  • 2 <= n <= 15
  • 0 <= graph[i][j] < n
  • graph[i][j] != i(即不存在自环)
  • graph[i] 中的所有元素 互不相同
  • 保证输入为 有向无环图(DAG)

Related Topics

  • 深度优先搜索
  • 广度优先搜索
  • 回溯
  • 👍 263
  • 👎 0

代码

代码语言:javascript
代码运行次数:0
运行
复制
func allPathsSourceTarget(graph [][]int) [][]int {
    var result [][]int
    var path = []int{0}
    var traverse func(node int)
    traverse = func(node int) {
        if node == len(graph)-1 {
            result = append(result, append([]int(nil), path...))
            return
        }
        for _, item := range graph[node] {
            path = append(path, item)
            traverse(item)
            path = path[:len(path)-1]
        }
    }
    traverse(0)
    return result
}

Post Views: 88

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-3-20 2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 思路
  • 题目
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档