class Solution {
public:
const int SIZE = 21;
vector<vector<int> > ans;
vector<int> V;
void dfs(vector<int>& cnt, int ind) {
if(ind >= cnt.size()) {
ans.push_back(V);
return ;
}
while(ind < cnt.size() && cnt[ind] == 0) ind++;
dfs(cnt, ind + 1);
if(ind >= cnt.size()) return ;
for(int ii = 0; ii < cnt[ind]; ii++) {
V.push_back(ind - 10);
dfs(cnt, ind + 1);
}
for(int ii = 0; ii < cnt[ind]; ii++) V.pop_back();
}
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
vector<int> cnt(SIZE, 0);
for(auto num : nums) cnt[num + 10]++;
dfs(cnt, 0);
return ans;
}
};
leetcode 90. 子集 II
最新推荐文章于 2024-05-23 20:34:16 发布