class Solution:
# @param num, a list of integer
# @return a list of lists of integers
def permute(self, num):
self.res = [];
self.dfs(num, 0)
return self.res
def dfs(self, num, level):
if level == len(num):
self.res.append(num)
print(num)
return
for i in range(level, len(num)):
num[i], num[level] = num[level], num[i]
self.dfs(num, level+1)
num[i], num[level] = num[level], num[i]
上面的代码用于生成给定一组数字的所有排列。例如,
数字=[1,3]
结果将是:
[13],[3,1]
但是上面的代码有一个我不理解的bug,它是self.res.append(num)。
如果我将其更改为self.res.append(num[:]),那么代码是正确的。有人能解释一下为什么吗?在
使用self.res.append(num),结果是:
[1,3],[1,3]
使用self.res.append(num[:]),结果是:
[1,3],[3,1]