Note:
- Elements in a subset must be in non-descending order.
- The solution set must not contain duplicate subsets.
If S =
[1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
Solution: DFS. [other good solutions: using binary number, iteration]
class Solution { public: void subsetsHelper(vector<vector<int> > &ret, vector<int> s, int cur, vector<int> r){ if(cur==s.size()){ ret.push_back(r); return; } //not add s[cur] subsetsHelper(ret, s, cur+1, r); //add s[cur] r.push_back(s[cur]); subsetsHelper(ret, s, cur+1, r); } vector<vector<int> > subsets(vector<int> &S) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<vector<int> > ret; if(S.empty()) return ret; sort(S.begin(), S.end()); vector<int> r; subsetsHelper(ret, S, 0, r); return ret; } };
No comments:
Post a Comment