特邀:@Hoks @Dead_reaper
题目:给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集。答案不能包含重复的子集。返回的答案中,子集可以按任意顺序 排列。
样例:
输入:nums = [1,2,2]
输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]
我的去世代码:
class Solution {
vector<int> num;
vector<vector<int>> ans;
vector<int> now;
map<vector<int>,bool> m;
int n;
public:
void method(int d,int start){
vector<int> tmp=now;
sort(tmp.begin(),tmp.end());
if(d<=n and !m[tmp]){ans.push_back(now);m.insert(make_pair(tmp,true));}
for(int i=start;i<=n-1;i++){
now.push_back(num[i]);
method(d+1,i+1);
now.pop_back();
}return ;
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
num=nums;
n=nums.size();
method(0,0);
return ans;
}
};
蒟蒻求调