[Leetcode]全排列II
题目描述
给定一个可包含重复数字的序列,返回所有不重复的全排列。
示例:
输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
解题思路
- 递归回溯
- 在全排列基础上,加了 可包含重复数字的序列 的要求
实现代码
class Solution:
def permuteUnique(self, nums: List[int]) -> List[List[int]]:
nums.sort() //排序
res = []
def backtrace(nums,ans):
if len(nums) == 0:
res.append(ans)
return
for i in range(len(nums)):
if i != 0 and nums[i] == nums[i-1]: //避免重复
continue
backtrace(nums[:i] + nums[i + 1:], ans + [nums[i]])
backtrace(nums, [])
return res