90.子集II
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
- DFS回溯
class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
if(nums.size() == 0) return {};
sort(nums.begin(),nums.end());
vector<vector<int> > res;
vector<int> tmp;
DFS(res,tmp,nums,0);
return res;
}
void DFS(vector<vector<int> > &res,vector<int> &tmp,vector<int> nums,int pos){
res.push_back(tmp);
for(int i = pos;i < nums.size();i++){
if(i > pos && nums[i] == nums[i-1]){
continue;
}
tmp.push_back(nums[i]);
DFS(res,tmp,nums,i+1);
tmp.pop_back();
}
}
};
通过时间: