0. 总结
- 10min题
1. 题目
2. 分析
经典题了。思路就是递归。对于每个数,当前都有选不选两种,但是无论如何,最后都需要把所有数都给选了。
3. 代码
import copy
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
vis = [0] * len(nums)
res = []
self.dfs(nums,vis,res,n=len(nums),tmp=[])
return res
# nums 表示数组
# vis 表示是否访问过
# res 表示存储最后的结果
# n 表示数组的个数
def dfs(self,nums,vis,res,n,tmp):
if len(tmp) == n:
print(tmp)
res.append(copy.deepcopy(tmp))
return
# 依次访问nums中的第i个数
for i in range(n):
if vis[i] == 0:
vis[i] = 1
tmp.append(nums[i])
self.dfs(nums,vis,res,n,tmp)
vis[i] = 0
tmp.pop()