回溯法框架:
result = []
def backtrack(路徑, 選擇列表):
if 滿足結束條件:
result.add(路徑)
return
for 選擇 in 選擇列表:
做選擇
backtrack(路徑, 選擇列表)
撤銷選擇
實現:
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
self.ans = []
def backtrace(nums,path):
if not nums:
self.ans.append(path)
for i in range(len(nums)):
backtrace(nums[:i]+nums[i+1:],path+[nums[i]])
backtrace(nums,[])
return self.ans