【发布时间】:2021-11-11 16:49:06
【问题描述】:
无法理解这段代码的错误在哪里 这是递归解决方案,我用 C++ 编写了相同的逻辑,但它在 python 中不起作用
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
arr = []
def per(nums,i):
if i == len(nums)-1:
arr.append(nums)
return
for j in range(i,len(nums)):
nums[i],nums[j] = nums[j],nums[i]
per(nums,i+1)
nums[i],nums[j] = nums[j],nums[i]
per(nums,i=0)
return arr
#input: nums = [1,2,3]
#my output: [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
#correct output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
【问题讨论】:
-
您好!欢迎来到 StackOverflow。这回答了你的问题了吗? List of lists changes reflected across sublists unexpectedly
-
快速修复:尝试将
arr.append(nums)替换为arr.append(list(nums));这将附加 nums 的副本 而不是 原始 nums
标签: python recursion permutation backtracking