No47. Permutations II(Python)

題目:

Given a collection of numbers that might contain duplicates, return all possible unique permutations.

Example:

Input: [1,1,2]
Output:
[
  [1,1,2],
  [1,2,1],
  [2,1,1]
]

思路:

    這道題目和上一道題目有點類似,相當於它的升級版。與之前所不同的地方是要給每一位list元素添加一個用來標誌該數字在  本層循環是否被訪問過的數組。如果這個元素在本層中已經被訪問過了,那麼跳過本次循環。

代碼:

class Solution(object):
    def permuteUnique(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        self.res=[]
        sublists = []
        nums = sorted(nums)
        flagList = [0]*len(nums)
        self.dfs(nums,sublists,flagList)
        return self.res
        
    def dfs(self,nums,sublists,flagList):
        if len(nums)==len(sublists):
            self.res.append(sublists[:])
        last = None
        for i in range(len(nums)):
            m = nums[i]
            if(flagList[i] == 1):
                continue
            if last == m:
                continue
            flagList[i]=1
            sublists.append(m)
            self.dfs(nums,sublists,flagList)
            last = sublists.pop()
            flagList[i] = 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章