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
  • 相关阅读:
    溢出省略号
    自定义字体
    jquery实现上一页下一页
    集成学习理解
    常用命令-python篇
    python 多进程和多线程
    10预处理命令上
    9函数
    8指针2
    7指针1
  • 原文地址:https://www.cnblogs.com/seyjs/p/8556522.html
Copyright © 2011-2022 走看看