回溯法
思路:
DFS,深度优先搜索。
代码一:
class Solution: def permute(self, nums: List[int]) -> List[List[int]]: def pathProcess(res:List[list],subNums:List[int],path:List[int]): if not subNums: res.append(path[:]) for i in subNums: tempNum = subNums[:] path.append(i) tempNum.remove(i) pathProcess(res,tempNum,path) path.pop() res = [] path = [] pathProcess(res,nums,path) return res
代码二:
class Solution: def permute(self, nums: List[int]) -> List[List[int]]: def pathProcess(first = 0): if first==n: res.append(nums[:]) for i in range(first,n): nums[first],nums[i] = nums[i],nums[first] pathProcess(first+1) nums[first],nums[i] = nums[i],nums[first] n = len(nums) res = [] pathProcess() return res