Do we need to have additional memory for storing the sets?
def find_subsets(nums):
subsets = [[]]
nums.sort()
for index, num in enumerate(nums):
start, end = 0, len(subsets)
if index > 0 and num == nums[index - 1]:
start = 1 << (index - 1)
for ind in range(start, end):
subsets.append(subsets[ind] + [num])
return subsets