我在试着解797。从源到目标的所有路径从Leetcode
。
我想到了使用带递归的回溯。
在下面的代码中,当我从path
弹出时,列表setOfPaths
也会得到更新。
我不确定我在这里做错了什么
class Solution(object):
def allPathsSourceTarget(self, graph):
path=[]
setOfPaths=[]
path.append(0)
self.backtrack(graph,0,len(graph)-1,path,setOfPaths)
return setOfPaths
def backtrack(self,graph,src,dest,path,setOfPaths):
if(src == dest):
setOfPaths.append(path)
else:
for node in graph[src]:
path.append(node)
self.backtrack(graph,node,dest,path,setOfPaths)
path.pop(len(path)-1) #BackTracking
当您尝试将
path
附加到setOfPaths
时,它实际上并不附加path
的数据,而是附加对path
或path
变量本身的引用。 因为setOfPaths
不包含数据,所以它包含变量,当您在变量中修改数据时,您会看到setOfPaths
也被修改要消除它,最简单的方法是存储变量的副本,这样在尝试修改“main”变量时就不会修改数据
这段代码应该可以工作
相关问题 更多 >
编程相关推荐