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;
}
};
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;
}
};
Top comments (0)
Subscribe
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Top comments (0)