题目描述:
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
Example:
Input: [1,1,2]
Output:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
题目大意:
- 给定一个数组,但是包含重复的数字,返回所有的不重复的排列顺序
解题思路:
- 有II,必有I,请看LeetCode算法题之46. Permutations I(medium)【Python3题解】
- 看过I后,II的区别只是数组包含了重复的数字,个人想法,简单粗暴,同样是I的思路,最后加上去重的代码即可
少废话,上代码:
class Solution:
def permuteUnique(self, nums):
ans = []
def find(nums=nums, idx=0):
if idx == len(nums)-1:
if nums not in ans:#去重代码,只有不在ans中的,才加到里面
ans.append(nums)
else:
for i in range(idx, len(nums)):
nums[i], nums[idx] = nums[idx], nums[i]
find(nums[:], idx+1)
find()
return ans
运行时间和内存使用:
- Runtime: 2024 ms, faster than 5.06% of Python3 online submissions for Permutations II.
- Memory Usage: 14.1 MB, less than 6.67% of Python3 online submissions for Permutations II