subsets-iiV2.py (711B)
1 # Proper backtracking solution: 2 3 4 class Solution: 5 def subsetsWithDup(self, nums: List[int]) -> List[List[int]]: 6 nums.sort() 7 subs = all_subsets([], nums) 8 subs.sort() 9 return subs 10 11 12 def all_subsets(current, options): 13 if len(options) == 0: 14 return [current] 15 16 return_ls = [] 17 prior = -100000 18 19 for index, option in enumerate(options): 20 if option == prior: 21 continue 22 prior = option 23 cp_ls = current.copy() 24 cp_ls.append(option) 25 results = all_subsets(cp_ls, options[index + 1 : len(options)]) 26 for result in results: 27 return_ls.append(result) 28 29 return_ls.append(current) 30 return return_ls