# 19.2.23 [LeetCode 90] Subsets II

Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).

Note: The solution set must not contain duplicate subsets.

Example:

Input: [1,2,2]
Output:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]

## 题解

 1 class Solution {
2 public:
3     void solve(vector<int>&nums, vector<vector<int>>&ans, vector<int>&now, int i) {
4         int n = nums.size(), _i = i;
5         for (; i < n; i++) {
6             if (i != _i && nums[i] == nums[i - 1])continue;
7             now.push_back(nums[i]);
8             ans.push_back(now);
9             solve(nums, ans, now, i + 1);
10             now.pop_back();
11         }
12     }
13     vector<vector<int>> subsetsWithDup(vector<int>& nums) {
14         sort(nums.begin(), nums.end());
15         vector<vector<int>>ans; vector<int>now;
16         ans.push_back(vector<int>());
17         solve(nums, ans, now, 0);
18         return ans;
19     }
20 };
View Code

posted @ 2019-02-23 17:01  TobicYAL  阅读(98)  评论(0编辑  收藏  举报