一、题目
二、回溯算法
一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解(或者至少不是最后一个解),回溯算法会通过在上一步进行一些变化抛弃该解,即回溯并且再次尝试。
class Solution(object):
def permute(self, nums):
def backtrack(first):
if first == n:
res.append(nums)
for i in range(first,n): #第一个位置的candidate,遍历所有元素
nums[first],nums[i] = nums[i],nums[first]
backtrack(first+1) # 遍历下一个位置
nums[first],nums[i] = nums[i],nums[first] #撤销操作 🍓
n = len(nums)
res = []
backtrack(0)
return res