思路:
S={1,2,3}对于一个集合S'={1,2},其子集共有四个{},{1},{2},{1,2}。集合S=S'+{3},因此,S的子集=S'的子集+{S'的子集+{3}}。同理,集合S''={1}的子集为{},{1}。
因此可以使用下面方法:初始一个空子集{};从原始集合中取一个元素e,将现在所求得的所有子集复制,并加入元素e;直到所有元素都取完毕。一种实现代码如下:
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<int> tmp;//初始化空子集
vector<vector<int> >res;
res.push_back(tmp);
for(int i=0;i<nums.size();i++){
int len = res.size();//必须事先得到 防止死循环
for(int j = 0;j<len;j++){//遍历s(i-1)得到的子集 然后添加s(i),得到最新的子集。
vector<int> row = res[j];
row.push_back(nums[i]);
res.push_back(row);
}
}
return res;
}
};