(一)题目描述
(二)思想方法
遍历数组,一个一个的添加,每一次循环在以前基础上添加本次循环的数,以此类推。比如对于题目中给的例子 [1,2,3] 来说,最开始是空集,那么我们现在要处理1,就在空集上加1,为 [1],现在我们有两个自己 [] 和 [1],下面我们来处理2,我们在之前的子集基础上,每个都加个2,可以分别得到 [2],[1, 2],那么现在所有的子集合为 [], [1], [2], [1, 2],同理处理3的情况可得 [3], [1, 3], [2, 3], [1, 2, 3], 再加上之前的子集就是所有的子集合了。
(三)代码实现
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int> > output(1);
for (int i = 0; i < nums.size(); ++i) {
int size = output.size();
for (int j = 0; j < size; ++j) {
output.push_back(output[j]);
output.back().push_back(nums[i]);
}
}
return output;
}
};