class Solution {
public:
? ? vector<vector<int> > subsets(vector<int> &S) {
? ? ? ? int len=S.size();
? ? ? ? if(len<=0){
? ? ? ? ? ? return{};
? ? ? ? }
? ? ? ? sort(S.begin(),S.end());//要先給原來(lái)的集合排序蛉谜,以保證每一個(gè)子集內(nèi)部都是遞增的
? ? ? ? vector<vector<int>>vv;
? ? ? ? vector<int>v;
? ? ? ? vv.push_back(v);
? ? ? ? for(int i=0;i<len;i++){
? ? ? ? ? ? int n=vv.size();
? ? ? ? ? ? for(int j=0;j<n;j++){
? ? ? ? ? ? ? ? vector<int>temp=vv[j];
? ? ? ? ? ? ? ? temp.push_back(S[i]);//這里的邏輯,集合每引入一個(gè)新的元素峡捡,那么最后集合中子集的個(gè)數(shù)相當(dāng)于在原來(lái)子集的基礎(chǔ)上每一個(gè)子集都引入這個(gè)新的元素形成新增的子集劣纲,然后和原來(lái)的子集合并逢捺。
? ? ? ? ? ? ? ? vv.push_back(temp);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? sort(vv.begin(),vv.end());//給容器vv排序,以保證容器內(nèi)的每一個(gè)子集也是按照遞增排列的
? ? ? ? vector<vector<int>>result;
? ? ? ? result.push_back(v);
? ? ? ? for(int i=1;i<=len;i++){
? ? ? ? ? ? for(int j=0;j<vv.size();j++){
? ? ? ? ? ? ? ? if(vv[j].size()==i){
? ? ? ? ? ? ? ? ? ? result.push_back(vv[j]);//此處的for循環(huán)癞季,相當(dāng)于按照子集內(nèi)部元素的個(gè)數(shù)進(jìn)行排序劫瞳,保證遞增
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return result;
? ? }
};