When I first saw the problem, somehow my brain believed the point is to remove duplicated results..
Anyway this is my code:
def permute(self, nums): if not nums: return  nums.sort() results =  self.perm(nums, , results) return results def perm(self, nums, result, results): prev =  for num in nums: if prev != num: prev = num newnums = nums[:] newnums.remove(num) if len(newnums) > 0: self.perm(newnums, result+[num], results) else: results.append(result+[num]) return
I found that most of other posted python solution will run for a long time, in input like [1,0,0,0,0,0,0,0,0,0,0]
Well if the answer with duplications is required, I can simply duplicate my output, for example, 10! time in above case that has 10 zeros.