解题思路
如果只有一项,排列就是只有一个
否则,将除第一个元素以外的排序,然后将第一个元素插入排列的任意位置产生完整的排列
47. 全排列 II
代码
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
first, *rest = nums
if not rest: return [[first]]
rest_perms = self.permuteUnique(rest)
perms = []
for p in rest_perms:
for i in range(len(p)+1):
pp = [*p[:i], first, *p[i:]]
if pp not in perms:
perms.append(pp)
return perms