您的位置:首页 > 编程语言 > Python开发

Lintcode 16.带重复元素的排列 python

2018-03-02 17:06 302 查看
直接在第15题的基础上修改,增加排序后去重
class Solution:
    """
    @param: :  A list of integers
    @return: A list of unique permutations
    """

    def permuteUnique(self, nums):
        # write your code here
        begin = 0
        end = len(nums)
        result = []
        
        if end == 0:
            return [[]]
        
        self.permute_temp(begin,end,nums,result)
        
        result.sort()          #排序后去重
        n = len(result)
        i = 0
        while i < len(result) - 1:
            if result[i] == result[i+1]:
                del result[i]
            else:

                i += 1
      return result
        
        
    def permute_temp(self,begin,end,nums,result):
        if begin == end:
            k = nums[:]
            result.append(k)
        else:
            for i in range(begin,end):
                temp = nums[begin]
                nums[begin] = nums[i]
                nums[i] = temp
                
                self.permute_temp(begin + 1,end,nums,result)
                
                temp = nums[begin]
                nums[begin] = nums[i]
                nums[i] = temp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息