class Solution: def permute(self, nums: List[int]) -> List[List[int]]: cur = [] res = [] used = [False] * len(nums)
def backtrack(): if len(cur) == len(nums): res.append(cur[:]) return for i in range(len(nums)): if used[i]: continue cur.append(nums[i]) used[i] = True backtrack() cur.pop() used[i] = False backtrack() return res
class Solution: def permuteUnique(self, nums: List[int]) -> List[List[int]]: cur = [] res = [] used = [False] * len(nums) nums.sort() def backtrack(): if len(cur) == len(nums): res.append(cur[:]) return for i in range(len(nums)): if used[i]: continue if i != 0 and nums[i] == nums[i-1] and used[i-1] == False: continue cur.append(nums[i]) used[i] = True backtrack() cur.pop() used[i] = False backtrack() return res