- 在上一题的代码基础上进行改变;
- 因为有重复的数字,如果直接应用上一题的代码,可能产生重复的子集。
即产生下述的情况:[1,4]和[4,1]是一个子集。
- 本题的思路:快排+回溯
利用快排去除重复的子集:
代码如下:
class Solution:
def subsetsWithDup(self, nums):
result = []
def back(index,tmp):
if tmp not in result:
result.append(tmp)
for i in range(index,len(nums)):
back(i + 1,tmp + [nums[i]])
back(0,[])
return result