您的位置:首页 > 其它

leetcode90 Subsets II

2016-01-06 16:07 417 查看
Given a collection of integers that might contain duplicates, nums, return all possible subsets.

Note:

Elements in a subset must be in non-descending order.

The solution set must not contain duplicate subsets.

For example,
If nums =
[1,2,2]
, a solution is:

[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]


class Solution {
public:
vector<vector<int>> subsetsWithDup(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<vector<int>> ans;
vector<int> cur;
ans.push_back(cur);
dep(ans,nums,0,cur);
return ans;
}
void dep(vector<vector<int>>&ans,vector<int>&nums,int pos,vector<int>&cur)
{
int size=nums.size();
if(pos>=size)
return;
for(int i=pos;i<size;i++)
{
if(i!=pos&&nums[i]==nums[i-1])
continue;

cur.push_back(nums[i]);
ans.push_back(cur);//解决自某个元素后都不选则添加不进结果集的情况
dep(ans,nums,i+1,cur);
cur.erase(cur.end()-1);
}
}
};


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: