47. 全排列 II
题目描述
给定一个可包含重复数字的序列,返回所有不重复的全排列。
示例:
输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
解题心得
解答本题只需要在昨天“全排列”的基础上,去除不重复元素即可
解题代码
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
ans = []
if len(nums) == 0:
return
if len(nums) == 1:
return [nums]
for index,item in enumerate(nums):
res = nums[:index]+nums[index+1:] #剩余的数字集合
#print('res',res,'item',item)
for j in self.permuteUnique(res): #对剩余的数字进行递归
ans.append(j+[item])
#print('ans',ans,'j',j)
rel = []
for i in ans:
if i not in rel:
rel.append(i)
return rel