所以問題是找到從源到目標的所有路徑(
# code snippet 2
class Solution:
def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
paths = []
def dfsPath(node):
if node == len(graph) - 1:
print(validPath) # line 6
paths.append(validPath.copy()) # line 7
return paths
else:
for n in graph[node]:
validPath.append(n)
dfsPath(n)
validPath.pop()
validPath = [0]
dfsPath(0)
return paths

上面兩個代碼片段中唯一的變化是第 7 行。我在第 6 行添加了列印陳述句以顯示什么validPath是持有。我的問題是為什么僅附加validPath, 會產生與附加時不同的輸出validPath.copy()(在第 7 行)。
uj5u.com熱心網友回復:
list.copy()回傳原始串列的淺拷貝。它回傳一個新串列,不修改原始串列。
因此,當您pop()對原始串列進行回溯操作時, 中的附加串列paths也會被修改。
您也可以paths.append(validPath[:])用來獲取原始串列的整個切片副本
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383332.html
上一篇:從命令列設定Python遞回限制
