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
nums
are 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;
}
};