1
class Solution {
2
public:
3
vector<vector<int>> ans;
4
void recur(vector<int> &nums, int i, vector<int> vec) {
5
if (i > nums.size()) {
6
return;
7
}
8
for (int j = i; j < nums.size(); j++) {
9
vec.push_back(nums[j]);
10

11
vector<int> temp = vec;
12
sort(vec.begin(), vec.end());
13

14
if (find(ans.begin(), ans.end(), vec) == ans.end()) {
15
ans.push_back(vec);
16
}
17

18
recur(nums, j + 1, vec);
19

20
// can't just pop_back any need to pop_back the one we added
21
vec = temp;
22
vec.pop_back();
23
}
24
}
25

26
vector<vector<int>> subsetsWithDup(vector<int> &nums) {
27
vector<int> vec;
28
ans.push_back(vec);
29
recur(nums, 0, vec);
30

31
return ans;
32
}
33
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0