Permutation I & II

题目描述

有重复的就先sort,遇到重复的并且之前一个没用过,就跳过

解题方法

Solution

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        if not nums:
            return []
        visited = {}
        result = []
        nums.sort()
        for num in nums:
            visited[num] = False
        self.permute_helper(nums,result,visited,[])
        return result

    def permute_helper(self, nums, result, visited, cur_list):
        if len(cur_list) == len(nums):
            new_list = list(cur_list)
            result.append(new_list)

        for idx, num in enumerate(nums):
            if idx != 0 and nums[idx-1] == num and visited[nums[idx-1]] == False:
                continue
            if not visited[num]:
                visited[num] = True
                cur_list.append(num)
                self.permute_helper(nums, result, visited, cur_list)
                cur_list.pop()
                visited[num] = False

Reference