AcWing 51. 使用python实现大佬的方法时遇到的问题并解决
原题链接
中等
作者:
南京伪学霸
,
2019-09-30 23:05:56
,
所有人可见
,
阅读 846
python 代码
import copy
class Solution:
def permutation(self, nums):
ret = []
flag = [False for _ in range(len(nums))]
path = [None for _ in range(len(nums))]
def dfs(nums, u, start):
if u == len(nums):
"""这里如果不拷贝 那么下面进行下一次 path的排列时 会改变这个已经
添加到 ret中的列表的结果(指向同一空间)"""
path1 = copy.copy(path)
ret.append(path1)
return
for i in range(start, len(nums)):
if not flag[i]:
flag[i] = True
path[i] = nums[u]
if u + 1 < len(nums) and nums[u] != nums[u+1]:
dfs(nums, u+1, 0)
else:
dfs(nums, u+1, i + 1)
flag[i] = False
nums.sort()
dfs(nums, 0, 0)
return ret