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], [] ]
解答:考虑采用递归的思想,先对输入排序,再进行递归
class Solution { public: vector<vector<int> > subsets(vector<int> &S) { int len=S.size(); sort(S.begin(),S.end()); vector<vector<int> > result; result=test(S,len); return result; } private: vector<vector<int>> test(vector<int> S,int len) { vector<vector<int>> out; vector<vector<int>> result; vector<int> tmp; vector<int> temp; int elment; if(len==0) { out.push_back(tmp); return out; } else if(len==1) { out.push_back(tmp); tmp.push_back(S[0]); out.push_back(tmp); return out; } else { elment=S[len-1]; out=test(S,len-1); for(int i=0;i<out.size();i++) { result.push_back(out[i]); temp=out[i]; temp.push_back(elment); result.push_back(temp); } return result; } } };