思路:
递归参数:nums,path数组
递归出口:当path的长度和nums相等时return。
单层递归逻辑:
- i从0开始(因为题目是排列):
- 如果当前元素在path中已经有了,就跳过本次循环;
- 如果当前元素不在path中,将当前元素加入path中,调用递归函数,pop出path的最后一个元素(回溯)。
class Solution(object):
def back(self,nums,path):
if len(path)==len(nums):
self.result.append(path[:])
return
for i in range(len(nums)):
if nums[i] in path:
continue
path.append(nums[i])
self.back(nums,path)
path.pop()
def permute(self, nums):
self.result=[]
self.back(nums,[])
return self.result