78. 子集

  1. 题目链接

  2. 解题思路

    • 从左往右的尝试,暴力递归(回溯),process(index, path),来到index,两种情况,要index的数,或者不要index的数
  3. 代码

    class Solution {
    public:
        void process(vector<vector<int>> &ans, const vector<int>& nums, int index, vector<int> &path) {
            if (index == nums.size()) {
                ans.push_back(path);
                return;
            }
            // 要这个数
            path.push_back(nums[index]);
            process(ans, nums, index + 1, path);
            path.pop_back();   // 不要忘记恢复现场
    
            // 不要这个数
            process(ans, nums, index + 1, path);
        }
        
        vector<vector<int>> subsets(vector<int>& nums) {
            vector<vector<int>> ans;
            vector<int> path;
            process(ans, nums, 0, path);
            return ans;
        }
    };
    
posted @ 2024-11-11 11:29  ouyangxx  阅读(14)  评论(0)    收藏  举报