def subsetsWithDup(nums):
res = []
nums.sort()
def dfs(index, path):
res.append(path)
for i in range(index, len(nums)):
if i > index and nums[i] == nums[i-1]:
continue
dfs(i+1, path+[nums[i]])
dfs(0, [])
return res
def subsets1(nums):
res = []
nums.sort()
def dfs(index, path):
res.append(path)
for i in range(index, len(nums)):
dfs(i+1, path+[nums[i]])
dfs(0, [])
return res