classSolution:defsubsetsWithDup(self, nums: List[int])-> List[List[int]]:
ret =[]
trace =[]for i inrange(len(nums),-1,-1):
self.backtrace(nums,i,0,trace,ret)return ret
defbacktrace(self,nums,n,start,trace,ret):iflen(trace)==n:ifsorted(trace[:])notin ret:
ret.append(sorted(trace[:]))returnfor i inrange(start,len(nums)):
trace.append(nums[i])
self.backtrace(nums,n,i+1,trace,ret)
trace.pop()
s = Solution()
result = s.subsetsWithDup([1,2,2])print(result)