注意点&感悟:
- used是全局的,通过改变标记来确定本层是否搜索完毕,
- 用used跳过[1,1,1]这种
- 不用start_index了
题目链接:46. 全排列
自己独立写的代码:
查看代码
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
# 不用start_index了 | 用used记录每层做跳过
res = []
used = [0] * len(nums)
self.backtracking(nums,[],res,used)
return res
def backtracking(self,nums,path,res,used):
if len(path) == len(nums):
res.append(path[:])
return
for i in range(len(nums)):
if used[i] ==1:
continue
path.append(nums[i])
used[i] = 1
self.backtracking(nums,path,res,used)
used[i] = 0
path.pop()