本文共 951 字,大约阅读时间需要 3 分钟。
Given a set of distinct integers, S, return all possible subsets.
Note:
For example,
If S = [1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]
子集问题我们用递归来做还是比较简单的,具体过程见图示:
//CODE
class Solution {public: void subRe(vector还是建议自己将递归树画一画,跟踪每步程序相关变量的变化,加深体会。>& re, vector &s,int j) { if(s.size() <= j) return; int size_ = re.size(); for(int i = 0; i < size_; ++i) { vector copy(re[i]); copy.push_back(s[j]); re.push_back(copy); } subRe(re, s, j + 1); } vector > subsets(vector &S) { vector > re; sort(S.begin(),S.end()); vector sol; re.push_back(sol); subRe(re, S, 0); return re; }};