子集

思路:

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;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容