https://leetcode.com/problems/subsets/
问题描述
Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3] Output: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解决方案
递归法
从头到尾遍历整个集合,依次从空集合开始,没加入已给原始,就是在原有结果的基础上,叠加上重新把新元素插入到已有集合生成的新集合。
Solution
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> empty;
res.push_back(empty);
for(int i = 0; i < nums.size(); i++)
{
recurSubSets(res, nums[i]);
}
return res;
}
private:
void recurSubSets(vector<vector<int>> &res, int num)
{
vector<vector<int>> tempRes;
for(int i=0; i < res.size(); i++)
{
vector<int>& item = res[i];
vector<int> newItem;
copy(item.begin(), item.end(), back_inserter(newItem));
newItem.push_back(num);
tempRes.push_back(newItem);
}
copy(tempRes.begin(), tempRes.end(), back_inserter(res));
}
};