leetcode 797

emmmm这题最后没做出来。一开始是想用bfs来做的,bfs写出来了,发现找路径不会,琢磨一会后,找路径写出来了,发现不像树结构,这里是有可能有两个父节点的。弄了半天,总是不对。后来只好参考别人的答案,发现用dfs更加直观点。附代码

hint:

此题做了好长时间,关键是对dfs和bfs不熟悉,好久不用,每次做这种题都不太想做,就想做无脑的题,emmmm后来发现真正有用的就是那些自己不会的题目,cheer up.

做题时,试图像C++一样用全局变量没成功,发现python可以把函数写在另一个函数里面。

发现无论是dfs还是bfs,他们的思想都一样,不是像我之前想的那样记录每个节点的前置节点,然后通过递归的方式得到最后的路径,而是每次往下走的时候,都会实时地记录路径,将最后到达target的路径保存到结果当中。

class Solution:
    
    def allPathsSourceTarget(self, graph):
        """
        :type graph: List[List[int]]
        :rtype: List[List[int]]
        """
        target = len(graph)-1
        result = []
        
        def dfs(source,target,past):
            if source == target:
                result.append(past)
            else:
                if len(graph[source]) == 0:
                    return None
                for each in graph[source]:
                    temp  = past.copy()
                    temp.append(each)
                    dfs(each,target,temp)
        dfs(0,target,[0])
        return result

猜你喜欢

转载自blog.csdn.net/bengepai/article/details/82108283