Permutations II

Permutations II

Given a list of numbers with duplicate number in it. Find all unique permutations.

解决方案:可以利用一个访问数组,来控制元素是否访问过,同时需要在退出的条件中,判断是否有重复的值。

class Solution:
    """
    @param nums: A list of integers.
    @return: A list of unique permutations.
    """
    def permuteUnique(self, nums):
        # write your code here
        isVisited = [False for i in range(len(nums))]
        if nums == None:
            return []
        result = []
        self.dfs(nums, result, [], isVisited)
        return result 

    def dfs(self, nums, result, current, isVisited):
        if len(nums) == len(current):
            if current not in result:
                result.append(list(current))
            return
        for i in range(len(nums)):
            if isVisited[i] == False:
                isVisited[i] = True
                current.append(nums[i])
                self.dfs(nums, result, current, isVisited)
                isVisited[i]  = False
                del current[-1]

Last updated

Was this helpful?