子集
    题目链接:https://leetcode-cn.com/problems/subsets/
    图片.png

    思路:求幂集的思想就是对数组中的每一个元素都做出包含/不包含的选择,从第一个一直选到最后一个,每确定一个子集后就回溯到上一层。

    参考代码:

    1. class Solution {
    2. private:
    3. vector<int> subRes;
    4. public:
    5. vector<vector<int>> subsets(vector<int>& nums) {
    6. vector<vector<int>> res;
    7. if (nums.size() == 0) {
    8. return res;
    9. }
    10. recursiveSubsets(nums, res, 0);
    11. return res;
    12. }
    13. void recursiveSubsets(vector<int>& nums, vector<vector<int>>& res, int i) {
    14. if (i == nums.size() - 1) {
    15. res.push_back(subRes);
    16. subRes.push_back(nums[i]);
    17. res.push_back(subRes);
    18. subRes.pop_back();
    19. return;
    20. }
    21. recursiveSubsets(nums, res, i + 1);
    22. subRes.push_back(nums[i]);
    23. recursiveSubsets(nums, res, i + 1);
    24. subRes.pop_back();
    25. }
    26. };