DEV Community

Siddhesh Bhupendra Kuakde
Siddhesh Bhupendra Kuakde

Posted on

Subsets

Iterative:

class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        int n = nums.size();
        vector<vector<int>> ans;
        ans.push_back({});
        for (int num : nums) {
            int size = ans.size();

            for(int i=0; i<size; i++){ // size 1 so fill all once time
                vector<int> ss = ans[i]; // just take current and more to it as per previous size 
                ss.push_back(num); // 1 -> 1 ,
                for(int i=0; i<ss.size(); i++){
                    cout<<ss[i];
                } 
                cout<<endl; 
                ans.push_back(ss);
            }
        }
// [] [0] [1] [2] [0 ,1] [1,2] [2 ,3] 
// 
        return ans;
    }
};
Enter fullscreen mode Exit fullscreen mode

Recursive

class Solution {
public:
    void createSubset(vector<int>& nums, int index , vector<vector<int>>&res, vector<int>&subset ){
        if(index == nums.size())
        {
            res.push_back(subset);
            return; 
        }
        subset.push_back(nums[index]); // take current 
        createSubset(nums, index+1, res, subset);

        subset.pop_back(); // dont take current 
        createSubset(nums, index+1, res, subset);

    }
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> res; 
        vector<int> subset;
        createSubset(nums, 0 , res, subset);
        return res; 
    }
     vector<vector<int>> subsets2(vector<int>& nums) {
        int n = nums.size();
        vector<vector<int>> ans;
        ans.push_back({});
        for (int num : nums) {
            int size = ans.size();

            for(int i=0; i<size; i++){ // size 1 so fill all once time
                vector<int> ss = ans[i]; // just take current and more to it as per previous size 
                ss.push_back(num); // 1 -> 1 ,
                for(int i=0; i<ss.size(); i++){
                    cout<<ss[i];
                } 
                cout<<endl; 
                ans.push_back(ss);
            }
        }
// [] [0] [1] [2] [0 ,1] [1,2] [2 ,3] 
// 
        return ans;
    }
};
Enter fullscreen mode Exit fullscreen mode

Top comments (0)