Subsets-II || Recursion + Backtracking || Faster than 100%

Simple backtracking solution to get all the possible subsets and then store them in a set before finally returning as a 2-d vector.

class Solution {
public:
    void findSubsets(vector<int>&nums,int i,vector<int>&curr,set<vector<int>>&s)
{
   if(i==nums.size()) 
   {
       s.insert(curr);
       return;
   }

   curr.push_back(nums[i]);
   findSubsets(nums,i+1,curr,s);

   curr.pop_back();
   findSubsets(nums,i+1,curr,s);
}

 vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        
     sort(nums.begin(),nums.end());
       set<vector<int>>  s;
  vector<int> curr;
     findSubsets(nums,0,curr,s);

    
     vector<vector<int>> ans;
 for(vector<int> v:s)ans.push_back(v);
return ans;
}
};
Comments (0)