文章目录
- 题目描述
- 题解思路
- 题解代码
题目描述
题解思路
初始化一个变量start表示当前从哪里开始遍历nums
搜索过程的数字组合加入结果集
从start开始遍历nums
如果当前元素和前一个元素相等,前一个元素没被使用,则触发剪枝去重操作,跳过当次遍历
否则,将start赋值为当前元素的下一个,递归搜索,然后跳过重复的数字,进行剪枝
直到搜索完毕,返回结果集
题解代码
class Solution:def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:nums.sort()start = 0res = []tmp = []n = len(nums)def dfs():nonlocal startres.append([num for num in tmp])i = startwhile i < n:start = i + 1tmp.append(nums[i])dfs()tmp.pop()while i < n - 1 and nums[i] == nums[i+1]:i+=1i+=1dfs()return res