class Solution {
public:
vector<vector<int> > subsets(vector<int> &S) {
int len=S.size();
if(len<=0){
return{};
}
sort(S.begin(),S.end());//要先给原来的集合排序,以保证每一个子集内部都是递增的
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]);//这里的逻辑,集合每引入一个新的元素,那么最后集合中子集的个数相当于在原来子集的基础上每一个子集都引入这个新的元素形成新增的子集,然后和原来的子集合并。
vv.push_back(temp);
}
}
sort(vv.begin(),vv.end());//给容器vv排序,以保证容器内的每一个子集也是按照递增排列的
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循环,相当于按照子集内部元素的个数进行排序,保证递增
}
}
}
return result;
}
};