问题描述:
Given a collection of integers that might contain duplicates, nums, return all possible subsets.
Note: The solution set must not contain duplicate subsets.
示例:
If nums = [1,2,2], a solution is:
[ [2], [1], [1,2,2], [2,2], [1,2], [] ] 问题分析:本题可按照子集生成的方法来做,结合set的性质,最终可以得到结果。
过程详见代码:
class Solution { public: vector<vector<int>> subsetsWithDup(vector<int>& nums) { sort(nums.begin(),nums.end()); set<vector<int>> res; res.insert(vector<int>()); int len = nums.size(); for (int i = 0; i < len; i++) { set<vector<int>> temp = res; for (auto v : res) { v.push_back(nums[i]); temp.insert(v); } res = temp; } vector<vector<int>> zres; zres.assign(res.begin(), res.end()); return zres; } };