子集
题目链接:https://leetcode-cn.com/problems/subsets/
思路:求幂集的思想就是对数组中的每一个元素都做出包含/不包含的选择,从第一个一直选到最后一个,每确定一个子集后就回溯到上一层。
参考代码:
class Solution {
private:
vector<int> subRes;
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
if (nums.size() == 0) {
return res;
}
recursiveSubsets(nums, res, 0);
return res;
}
void recursiveSubsets(vector<int>& nums, vector<vector<int>>& res, int i) {
if (i == nums.size() - 1) {
res.push_back(subRes);
subRes.push_back(nums[i]);
res.push_back(subRes);
subRes.pop_back();
return;
}
recursiveSubsets(nums, res, i + 1);
subRes.push_back(nums[i]);
recursiveSubsets(nums, res, i + 1);
subRes.pop_back();
}
};