解题思路:
1,因为题目要求子集中元素是递增顺序,所以首先将给定的数组排序
2,此时问题转化为DFS,即对于数组中的每个元素,存在两种情况,要么存在当前的子集中,要么不存在
代码
class Solution {
public:
vector<vector<int> > subsets(vector<int> &S) {
vector<vector<int> > res;
vector<int> tempSubset;
sort(S.begin(), S.end());
subsetHelper(res, tempSubset, 0, S);
return res;
}
void subsetHelper(vector<vector<int> > &res, vector<int> tempSubset, int iEnd, vector<int> S)
{
if(iEnd==S.size())
{
res.push_back(tempSubset);
return;
}
tempSubset.push_back(S[iEnd]);
subsetHelper(res, tempSubset, iEnd+1, S);
tempSubset.pop_back();
subsetHelper(res, tempSubset, iEnd+1, S);
}
};