和subsets没什么区别,还是一样dfs,多用个set简单点
class Solution {
public:
set<vector<int>>s;
void dfs(vector<int>& nums,vector<int>temp,int index) {
for (int i = index; i < nums.size(); ++i) {
temp.push_back(nums[i]);
s.insert(temp);
dfs(nums, temp, i + 1);
temp.pop_back();
}
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<vector<int>>res = { {} };
vector<int>temp;
dfs(nums, temp, 0);
for (auto z : s)res.push_back(z);
return res;
}
};