方法一
实现思路
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210215110254283.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDk0NDA0Ng==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210215110423556.png)
实现代码
class Solution {
public:
void generate(int i,vector<int> item,vector<int> &nums,set<vector<int>> &res){
if(i>=nums.size()) return;
item.push_back(nums[i]);
if(!res.count(item))
res.insert(item);
generate(i+1,item,nums,res);
item.pop_back();
generate(i+1,item,nums,res);
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<int> item;
set<vector<int>> res;
vector<vector<int>> re;
res.insert(item);
generate(0,item,nums,res);
set<vector<int>>::iterator it=res.begin();
for(;it!=res.end();it++){
re.push_back(*it);
}
return re;
}
};
提交结果及分析
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210215112118223.png)