nums: список чьих перестановок мне нужно найти. Проблема Leetcode: 46. Мне нужно вернуть матрицу, содержащую все перестановки списка. Когда он достигает конца возврата, я печатаю числа и даже добавляю числа к матрице. Он печатает измененные числа, но добавляет оригинальные числа. Кто-нибудь может объяснить мне причину или как я нашел эту проблему?
Я пытался создать v как глобальную матрицу, но она не работает.
class Solution:
def permutation(self, v, nums, l, r):
if l == r-1:
print(nums)
v.append(nums)
else:
for i in range(l, r):
nums[i], nums[l] = nums[l], nums[i]
self.permutation(v, nums, l+1, r)
nums[i], nums[l] = nums[l], nums[i]
return v
def permute(self, nums: List[int]) -> List[List[int]]:
v = []
return self.permutation(v, nums, 0, len(nums))
'''
Input:[1,2,3]
Printing:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
Output:
[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]
Expected:
[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]