###47. Permutations II
题目: https://leetcode.com/problems/permutations-ii/
难度:
Medium
虽然想到了,但是没有靠自己的力量implement出来,还是比较容易了理解的,因为如果有重复的,那么处理只用处理第一个,就只用把第一个提出来,剩下的管它怎么permute。
第二次碰到这个元素就不要再用它了,因为可能出现的组合已经有了。
看代码: base case 处理掉 sort一下,设置一个prevNum变量
如果碰到过了,就continue,去继续执行下一个
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
if len(nums) == 0: return []
if len(nums) == 1: return [nums]
res = []
nums.sort()
for i in range(len(nums)):
if i > 0 and nums[i] == nums[i-1]: continue
for j in self.permuteUnique(nums[:i] + nums[i+1:]):
res.append([nums[i]] + j)
return res