Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,2], a solution
is:
[ [2], [1], [1,2,2], [2,2], [1,2], [] ]
class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n=nums.size();
vector<vector<int>>v;
if(n==0) return v;
set<vector<int>>s;
for(int i=0;i<(1<<n);i++){
vector<int>r;
for(int j=0;j<n;j++){
if(i&(1<<j)) r.push_back(nums[j]);
}
s.insert(r);
}
for(auto it=s.begin();it!=s.end();it++)
v.push_back(*it);
return v;
}
};
处理含重复元素的子集生成

本文介绍了一种处理包含重复元素的整数集合,生成所有可能子集的方法,并确保解决方案中不包含重复的子集。通过使用C++代码示例展示了如何利用集合去除重复项,最终将结果转换为向量返回。
220

被折叠的 条评论
为什么被折叠?



