Я пытаюсь добавить перестановки списка целых чисел к локальной переменной в python, но заканчиваю добавлять одну перестановку несколько раз.Код будет печатать все результаты правильно, но не уверен, почему моя переменная класса не будет корректно обновлена.
Любая помощь будет чрезвычайно признательна !!
Я работаю над проблемой leetCode, но могуне выводить правильные результаты.Я пытаюсь обновить свой массив myVals в цикле обратного отслеживания, но сохраняю только одну перестановку.
Однако я могу напечатать все результаты, когда
class Solution:
def __init__(self):
self.myVals = []
def add(self, x):
self.myVals.append(x)
def permuteArray(self, nums, l, r):
if l == r:
print(nums)
self.add(nums)
else:
for i in range(l, r + 1):
nums[l], nums[i] = nums[i], nums[l]
self.permuteArray(nums, 1+l, r)
nums[l], nums[i] = nums[i], nums[l]
def permute(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
numCount = len(nums)
start = 0
self.permuteArray(nums, start, numCount - 1)
print(self.myVals)
nums = [1,2,3]
driver = Solution()
result = driver.permute(nums)
Ожидаемые результаты: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]]
Фактические результаты: [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1,2, 3]]