[Leetcode]Subsets II
2015-01-27 06:32
363 查看
//DFS,要改变temp和result的值,所以要用到&
//每次循环最后要pop出最后一个元素
class Solution {
private:
vector<int>temp;
vector<vector<int>>result;
void sub_set(vector<int> S, vector<int>&temp, vector<vector<int>>&result,int index)
{
result.push_back(temp);
for(int i=index;i<S.size();i++)
{
if(i!=index&&S[i]==S[i-1])
continue;
temp.push_back(S[i]);
sub_set(S,temp,result,i+1);
temp.pop_back();
}
}
public:
vector<vector<int> > subsetsWithDup(vector<int> &S) {
result.clear();
if(S.size()<=0)
return result;
sort(S.begin(),S.end());
sub_set(S,temp,result,0);
return result;
}
};
//每次循环最后要pop出最后一个元素
class Solution {
private:
vector<int>temp;
vector<vector<int>>result;
void sub_set(vector<int> S, vector<int>&temp, vector<vector<int>>&result,int index)
{
result.push_back(temp);
for(int i=index;i<S.size();i++)
{
if(i!=index&&S[i]==S[i-1])
continue;
temp.push_back(S[i]);
sub_set(S,temp,result,i+1);
temp.pop_back();
}
}
public:
vector<vector<int> > subsetsWithDup(vector<int> &S) {
result.clear();
if(S.size()<=0)
return result;
sort(S.begin(),S.end());
sub_set(S,temp,result,0);
return result;
}
};
相关文章推荐
- Leetcode-Subsets II
- Subsets II [leetcode] 从获取子集的递归和循环方法说起,解决重复子集的问题
- [LeetCode 78] Subsets && [LeetCode 90] Subsets II
- LeetCode 90 Subsets II--In C++
- leetCode---Subsets II
- LeetCode---Subsets II
- 【leetcode】Subsets II (middle) ☆
- Leetcode 90. Subsets II
- [LeetCode]Subsets II生成组合序列
- LeetCode--Subsets II
- LeetCode90 Subsets II
- LeetCode 90:Subsets II
- LeetCode 90. Subsets II
- leetcode 48: Subsets II
- [LeetCode]90. Subsets II
- LeetCode:Subsets II
- leetcode之Subsets II
- leetcode[91] Subsets II
- Subsets II--LeetCode
- [LeetCode] Subsets II