44_leetcode_Subsets
2014-06-19 11:09
274 查看
Given a set of distinct integers, S, 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 S =
is:
1:注意特殊情况,以及对数组进行排序;2:组合中的数组分别由1,2,。。。组成;3:采用递归,注意递归结束条件以及满足条件的情况。
vector<vector<int> > subsets(vector<int> &S)
{
vector<vector<int> > result;
if(S.size() == 0)
{
return result;
}
sort(S.begin(), S.end());
vector<int> temp;
unsigned long size = S.size();
result.push_back(temp);
for(int i = 1; i <= size; i++)
{
temp.clear();
subsetsCore(S, 0, i, temp, result);
}
return result;
}
void subsetsCore(vector<int> &S, int index, int number, vector<int> &temp, vector<vector<int> > &result)
{
if(number == 0)
{
result.push_back(temp);
return;
}
if(index == (int)S.size() || S.size() - index < number)
{
return;
}
temp.push_back(S[index]);
subsetsCore(S, index + 1, number - 1, temp, result);
temp.pop_back();
subsetsCore(S, index + 1, number, temp, result);
}
Note:
Elements in a subset must be in non-descending order.
The solution set must not contain duplicate subsets.
For example,
If S =
[1,2,3], a solution
is:
1:注意特殊情况,以及对数组进行排序;2:组合中的数组分别由1,2,。。。组成;3:采用递归,注意递归结束条件以及满足条件的情况。
vector<vector<int> > subsets(vector<int> &S)
{
vector<vector<int> > result;
if(S.size() == 0)
{
return result;
}
sort(S.begin(), S.end());
vector<int> temp;
unsigned long size = S.size();
result.push_back(temp);
for(int i = 1; i <= size; i++)
{
temp.clear();
subsetsCore(S, 0, i, temp, result);
}
return result;
}
void subsetsCore(vector<int> &S, int index, int number, vector<int> &temp, vector<vector<int> > &result)
{
if(number == 0)
{
result.push_back(temp);
return;
}
if(index == (int)S.size() || S.size() - index < number)
{
return;
}
temp.push_back(S[index]);
subsetsCore(S, index + 1, number - 1, temp, result);
temp.pop_back();
subsetsCore(S, index + 1, number, temp, result);
}
相关文章推荐
- 【Leetcode】Subsets
- leetcode Subsets II
- [LeetCode] Subsets
- leetcode---subsets---回溯
- LeetCode 078 Subsets
- leetcode Subsets II problem
- [leetcode]78. Subsets
- [LeetCode]Subsets
- 【leetcode 44】Wildcard Matching
- Leetcode: Subsets
- [Leetcode 44, Hard] Wildcard match
- LeetCode之78. Subsets
- LeetCode Subsets II
- LeetCode--73.Subsets
- LeetCode(44)- Isomorphic Strings
- LeetCode 78 Subsets
- leetcode 078 —— Subsets
- LeetCode 44. Wildcard Matching
- [leetcode]Subsets
- 90. Subsets II LeetCode