给你一个整数数组 nums
,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
看了评论,可以从前往后遍历,将新的数加到之前的子集里,构成新子集。。。太妙了!!
C++
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> ans;
int n = nums.size(),nn;
ans.push_back(vector<int>());
for(int i = 0;i<n;i++){
nn = ans.size();
for(int j = 0; j < nn; j++){
ans.push_back(ans[j]);
ans[nn+j].push_back(nums[i]);
}
}
return ans;
}
};