78. 子集

ouyangxx發表於2024-11-11
  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;
        }
    };
    

相關文章