90. 子集 II
給定一個可能包含重復元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。
說明:解集不能包含重復的子集。
示例:
輸入: [1,2,2]
輸出:
[
? [2],
? [1],
? [1,2,2],
? [2,2],
? [1,2],
? []
]
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/subsets-ii
著作權歸領扣網(wǎng)絡所有。商業(yè)轉載請聯(lián)系官方授權,非商業(yè)轉載請注明出處。
解法:
#include <iostream> #include <vector> #include <algorithm> using namespace std;class Solution { public:vector<vector<int>> subsetsWithDup(vector<int>& S){if (S.empty()) return {};vector<vector<int>> res;vector<int> out;sort(S.begin(), S.end());getSubsets(S, 0, out, res);for (auto c : res){for (auto s : c)cout << s << " ";cout << endl;}return res;}void getSubsets(vector<int> & S, int pos, vector<int> & out, vector<vector<int>> & res){res.push_back(out);for (int i = pos; i < S.size(); ++i){out.push_back(S[i]);getSubsets(S, i + 1, out, res);out.pop_back();while (i + 1 < S.size() && S[i] == S[i + 1]) ++i;}} };int main() {int n;cin >> n;vector<int> nums;for (int i = 0; i < n; ++i){int a;cin >> a;nums.push_back(a);}Solution s;s.subsetsWithDup(nums);return 0; }輸出結果:
總結
- 上一篇: 和平饭店剧情介绍
- 下一篇: 求解,为什么这样用nth-of-type