class Solution:
# @param A : list of integers
# @return a list of list of integers
def check(self,arr,l,i):
for j in range(l,i):
if arr[j]==arr[i]:
return 0
return 1
def calc(self,arr,l,r,temp):
if l>=r:
#return arr
self.result.append(temp)
print(temp)
#print(arr)
for i in range(l,r):
if self.check(arr,l,i):
arr[l],arr[i]=arr[i],arr[l]
temp=arr
self.calc(arr,l+1,r,temp)
arr[l],arr[i]=arr[i],arr[l]
def permute(self, A):
self.result=[]
temp=[]
self.calc(A,0,len(A),temp)
print(self.result)
输入:
[ 1, 2, 3 ]
输出:
[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]]
上面的代码是基于这个问题从 极客forgeeks(https://www.geeksforgeeks.org/distinct-permutations-string-set-2/) .我试图为特定的语义存储所有可能的不同排列,如1,2,3。我无法在 self.result 中捕获递归调用的输出([1,2,3] 当我尝试这样做时重复)变量,但我能够正确打印它。有人可以帮助如何将其存储在self.result变量中吗?
慕码人8056858
相关分类