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

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