Subsets - Simple Iterative solution
Problem Statement:
Given an integer array nums of unique elements, return all possible subsets (the power set).
The solution set must not contain duplicate subsets. Return the solution in any order.
Example 1:
Input: nums = [1,2,3] Output: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
Example 2:
Input: nums = [0] Output: [[],[0]]
Constraints:
1 <= nums.length <= 10-10 <= nums[i] <= 10- All the numbers of
numsare unique.
Solution:
- Start with
curr = [[]] - Iterate over
nums. At each iteration, double the size of subsets. - To do this just take all current elements of
curr. Append last seen elementnums[i]to these arrays and push them back tocurr.
#define pb push_back
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> curr;
curr.pb({});
for (int n: nums)
{
int sz=curr.size();
for (int i=0; i<sz; i++){auto v = curr[i]; v.pb(n); curr.pb(v);}
}
return curr;
}
};