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