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 = [1,2,3]
, a solution is:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
Solution:
Code:
<span style="font-size:14px;">class Solution {
public:
void helper(vector<int> &S, int index, const int &length, vector<vector<int> > &results, vector<int> &result) {
for (int i = index; i < length; i++) {
result.push_back(S[i]);
results.push_back(result);
helper(S, i+1, length, results, result);
result.pop_back();
}
}
vector<vector<int> > subsets(vector<int> &S) {
vector<vector<int> > results;
vector<int> result;
results.push_back(result);
int length = S.size();
if (length == 0) return results;
sort(S.begin(), S.end());
helper(S, 0, length, results, result);
return results;
}
};</span>