题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
http://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
Python 回溯写法
# 伪代码:
def 回溯函数():
if (满足条件):
保存结果(patch[:]在此处为拷贝引用,否则输出会为空)
for i in (列表选择):
选取操作,记录该选择
回溯()
撤销操作
完整代码:
class Solution:
def permute(self , num: List[int]) -> List[List[int]]:
# write code here
res = []
path = []
n = len(num)
def backTracking(array, n):
if len(path) == n:
res.append(path[:])
return
for idx, digit in enumerate(array):
path.append(digit)
del array[idx]
backTracking(array, n)
array.insert(idx, digit)
path.pop()
backTracking(num, n)
return res