1class Solution {2public:3vector<vector<int>> ans;4void recur(vector<int> &nums, int i, vector<int> vec) {5if (i > nums.size()) {6return;7}8for (int j = i; j < nums.size(); j++) {9vec.push_back(nums[j]);1011vector<int> temp = vec;12sort(vec.begin(), vec.end());1314if (find(ans.begin(), ans.end(), vec) == ans.end()) {15ans.push_back(vec);16}1718recur(nums, j + 1, vec);1920// can't just pop_back any need to pop_back the one we added21vec = temp;22vec.pop_back();23}24}2526vector<vector<int>> subsetsWithDup(vector<int> &nums) {27vector<int> vec;28ans.push_back(vec);29recur(nums, 0, vec);3031return ans;32}33};