# @param num int整型一维数组
# @return int整型二维数组
#
class Solution:
def permute(self , num ):
res = []
out = []
def dfs(num,res):
if not num:
if res not in out:
out.append(res)
for i in range(len(num)):
dfs(num[:i]+num[i+1:],res+[num[i]])
dfs(num,res)
return out
输入:[1,2,3]
返回值:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
集合的所有子集
class Solution:
def subsets(self , A ):
res = []
out = []
n = len(A)
istart = 0
def dfs(istart,res):
out.append(res)
for i in range(istart,n):
dfs(i+1,res+[A[i]])
dfs(istart,res)
out = sorted(out,key=lambda x:len(x))
return out
输入:[1,2,3]
返回值:[[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]]
对比两者可以发现都是递归中嵌套循环结构,对于全排列相关问题,可以用类似的思路处理