zoukankan      html  css  js  c++  java
  • 【leetcode】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    v
    2--->3
    There 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.

    解题思路:题目明确了没有回路,而且nodes的范围是[2,15],这实在是大大降低了难度,一个深度遍历就能搞定,注意由于结果需要输出path,所以需要记录每次遍历的过程。

    代码如下:

    class Solution(object):
        def copy(self,src,dest):
            for i in src:
                dest.append(i)
            return dest
        def allPathsSourceTarget(self,graph):
            stack = []
            stack.append([0]) 
            step = []
            res = []
            while len(stack) > 0:
                path = stack.pop(0)
                if path[-1] == len(graph) - 1:
                    res.append(self.copy(path,[]))
                for i in graph[path[-1]]:
                    tl = self.copy(path,[])
                    tl.append(i)
                    stack.insert(0,tl)
            return res
  • 相关阅读:
    将Ubuntu18.04安装到U盘,实现即插即用
    小技巧之 前端自适应
    web笔记之 环境搭建
    C++学习笔记之 单例模式
    推荐一款Markdown编辑器:typora
    C++学习笔记之 类和对象
    C++学习笔记之 函数
    C++学习笔记之 内联函数
    C++学习笔记之 引用
    C++学习笔记之 const
  • 原文地址:https://www.cnblogs.com/seyjs/p/8556522.html
Copyright © 2011-2022 走看看