LeetCode Permutaions II
LeetCode解題のPermutaions II
原題
繰り返し数のある配列の全配列を出力します.
注意点:重複数は、重複する配列 をもたらす可能性がある.
例:
入力:nums=[1,2,1]出力:[[1,1,2],[1,2,1],[2,1,1]]
問題を解く構想.
この問題は前のPermutationsの強化版で、今重複する数字を考慮して、サボる方法を採用して、先に配列を並べ替えて、遍歴する時直接重複する数字を無視して、もとの基礎の上で2行のコードを追加するだけです.
ACソース
私のGithub(https://github.com/gavinfish/LeetCode-Python)を使用して、関連するソースコードを取得します.
原題
繰り返し数のある配列の全配列を出力します.
注意点:
例:
入力: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)を使用して、関連するソースコードを取得します.