这一题允许有重复。需要做的是排序,然后判断重复,
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
visit = [0 for i in range(len(nums))]
nums.sort()
res = []
self.bfs(visit, nums, res, [])
return res
def bfs(self, visit,nums, res, temp):
if len(temp) == len(nums):
res.append(temp)
return
for i in range(len(nums)):
if visit[i] == 0:
if i > 0 and visit[i-1] != 0 and nums[i-1] == nums[i]:
continue
visit[i] = 1
self.bfs(visit, nums, res, temp+[nums[i]])
visit[i] = 0