标签:
这道题与 046 Permutations 基本一样, 唯一要注意的是需要去除重复的。 方法是在每一层的选数过程中如果相邻(当然是先排序了的)的数字相同,则在这一层中不再选举。
class Solution: # @param {integer[]} nums # @return {integer[][]} def permuteUnique(self, nums): nums = sorted(nums) return self.help(nums) def help(self, nums): ans = [] if len(nums) <= 1: return [nums] i = 0 while i < len(nums): d = nums.pop(i) for res in self.help(nums): ans += [[d] + res] nums.insert(i, d) while (i < len(nums) - 1) and nums[i+1] == nums[i]: i += 1 i += 1 return ans
标签:
原文地址:http://www.cnblogs.com/dapanshe/p/4631831.html