bitmasking:
歪打正着,想着跟子集1(没有重复的元素)差不多,去下重就好了,然后没排序,然后就出现了重复的子集,然后排下序观察输出,然后就好了???,然后发现没排序重复是因为有的子集包含的元素相同,但元素内顺序不一样
可以参考子集1
https://blog.csdn.net/qq_40691051/article/details/104326461
class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
int n=nums.size();
sort(nums.begin(),nums.end());
vector<vector<int>>res;
set<vector<int>>m_set;
for(int mask = 0; mask < (1<<n); mask++)
{
vector<int>temp;
for(int i = 0; i < n; i++)
{
if(mask&(1<<i)) // is the i-th bit of this mask 1?
{//This mask corresponds to a subset containing i-th number of nums array
temp.push_back(nums[i]);
}
}
if(m_set.count(temp) == 0)
{//去重
m_set.insert(temp);
res.push_back(temp);
}
}
return res;
}
};