78.集合的子集

题目:78.子集

//实际上就是k=0,1,2,,,nums.size()的组合问题
class Solution {
public:
    vector<int> path;
    vector<vector<int>> finalPath;
    
    void backtracking(vector<int> nums,int startIndex,int k,vector<int> &path,vector<vector<int>> &finalPath){
        if(path.size()==k){
            finalPath.push_back(path);
            return;
        }
        for(int i=startIndex;nums.size()-i+path.size()>=k;i++){
            path.push_back(nums[i]);
            backtracking(nums,i+1,k,path,finalPath);
            path.pop_back();
        }
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        finalPath.push_back(path);
        for(int k=1;k<=nums.size();k++)
            backtracking(nums,0,k,path,finalPath);
        return finalPath;
    }
};
posted @ 2025-03-21 16:17  Cheauncey  阅读(24)  评论(0)    收藏  举报