LeetCode Permutaions II


LeetCode解題のPermutaions II
原題
繰り返し数のある配列の全配列を出力します.
注意点:
  • 重複数は、重複する配列
  • をもたらす可能性がある.
    例:
    入力:nums=[1,2,1]出力:[[1,1,2],[1,2,1],[2,1,1]]
    問題を解く構想.
    この問題は前のPermutationsの強化版で、今重複する数字を考慮して、サボる方法を採用して、先に配列を並べ替えて、遍歴する時直接重複する数字を無視して、もとの基礎の上で2行のコードを追加するだけです.
    ACソース
    class Solution(object):
        def permuteUnique(self, nums):
            """ :type nums: List[int] :rtype: List[List[int]] """
            result = []
            nums.sort()
            self.get_permute([], nums, result)
            return result
    
        def get_permute(self, current, num, result):
            if not num:
                result.append(current + [])
                return
            for i, v in enumerate(num):
                if i - 1 >= 0 and num[i] == num[i - 1]:
                    continue
                current.append(num[i])
                self.get_permute(current, num[:i] + num[i + 1:], result)
                current.pop()
    
    
    if __name__ == "__main__":
        assert Solution().permuteUnique([1, 2, 1]) == [[1, 1, 2], [1, 2, 1], [2, 1, 1]]

    私のGithub(https://github.com/gavinfish/LeetCode-Python)を使用して、関連するソースコードを取得します.