Subsets II Posted on 2018-09-27 Descriptionhttps://leetcode.com/problems/subsets-ii/description/ Solution12345678910111213141516171819202122232425262728class Solution {public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { vector<vector<int> > ret; unordered_map<int, int> counter; for (int i = 0; i < nums.size(); i++) counter[nums[i]] += 1; unordered_map<int, int>::iterator iter = counter.begin(); vector<int> current; this->getSet(counter, current, iter, ret); return ret; } void getSet(unordered_map<int, int>& counter, vector<int>& current, \ unordered_map<int, int>::iterator iter, vector<vector<int>>& ret) { ret.push_back(current); if (iter == counter.end()) return; for (auto it = iter; it != counter.end(); it++) { int count = it->second; for (int i = 0; i < count; i++) { current.push_back(it->first); auto nextIter = next(it, 1); this->getSet(counter, current, nextIter, ret); } for (int i = 0; i < count; i++) current.pop_back(); } return; }};