微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么第 12 行的深度优先搜索中的列表路径与路径的输出存在差异?

如何解决为什么第 12 行的深度优先搜索中的列表路径与路径的输出存在差异?

这是 DFS 从源到目标的所有路径的代码,其中源 = 0,目标 = 图形大小 - 1。在第 12 行,为什么我不能简单地执行 res.append((path)),因为路径是已经有名单了吗?

from collections import defaultdict
class Solution:
    def allPathsSourceTarget(self,graph: List[List[int]]) -> List[List[int]]:
        adjlist = defaultdict(list)
        for i in range(len(graph)):
            adjlist[i].extend(graph[i])
        start = 0
        destination = len(graph) -  1
        res = []
        def dfs(node,path):
            nonlocal res
            if node == destination:
                res.append(list(path))
                return 
            if node in adjlist:
                for nextNode in adjlist[node]:
                    path.append(nextNode)
                    dfs(nextNode,path)
                    path.pop()
        dfs(0,[0])
        print(res)

解决方法

当您简单地传递路径时,它会传递对路径变量的引用。 本质上,您指的是原始路径变量。

list(path) 本质上会附加路径的浅拷贝作为新列表,因此不会反映对路径所做的更改。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。