0%

subsets-ii

题目描述

给定一个可能包含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。

说明:解集不能包含重复的子集。

题解

总得先排个序。

用set去重?或者vector去重的话也可以用unique函数。

虽然不算快,但也是一遍过,不错哦,就这样吧,可以去玩啦~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(), nums.end());
vector<vector<int>> res = { {} };
for (int i = 0; i < nums.size(); i++)
{
int k = res.size();
while (k--)
{
res.push_back(res[k]);
res[k].push_back(nums[i]);
}
}
sort(res.begin(), res.end());

res.erase(unique(res.begin(), res.end()), res.end());
return res;
}