码迷,mamicode.com
首页 > 其他好文 > 详细

047 Permutations 2

时间:2015-07-09 06:18:40      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

这道题与 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

 

047 Permutations 2

标签:

原文地址:http://www.cnblogs.com/dapanshe/p/4631831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!