题目
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
发现一个思路:遇到一个数就把之前所有子集加上该数组成新的子集,遍历完毕即是新的子集.
运行成功的代码
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums)
{
vector<vector<int>> output;//存储子集所有结果
vector<int> subset; //存储子集
int length=nums.size();
output.push_back(subset); //存储子集为空
int current=0; //记录当前元素,也就是当前要遇到的数
int output_size; //已经存储的
while(current<length)
{ //遇到一个数就把之前所有子集加上该数组成新的子集,遍历完毕就是新的子集
output_size=output.size();
for(int i=0;i<output_size;i++)
{
vector<int> newinsert=output[i];
newinsert.insert(newinsert.end(),nums[current]);
output.push_back(newinsert);
}
current++;
}
return output;
}
};
运行结果