题解 | 没有重复项数字的全排列
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
from typing import List
class Solution:
def permute(self, num: List[int]) -> List[List[int]]:
results = []
used = [False] * len(num) # 使用一个布尔数组来标记元素是否被使用
path = [] # 记录当前路径
def backtrack():
# 判断是否为解
if len(path) == len(num):
results.append(path.copy()) # 记录解的副本
return
# 遍历所有选择
for i in range(len(num)):
# 剪枝:如果元素已经被使用,则跳过
if used[i]:
continue
# 做选择
path.append(num[i])
used[i] = True
# 递归搜索
backtrack()
# 回退
path.pop()
used[i] = False
backtrack()
return results