# 78. Subsets

## Problem Statement

<br>

Given an integer array `nums` of **unique** elements, return *all possible*&#x20;

*subsets* *(the power set)*.

The solution set **must not** contain duplicate subsets. Return the solution in **any order**.

&#x20;

**Example 1:**

<pre><code><strong>Input: nums = [1,2,3]
</strong><strong>Output: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
</strong></code></pre>

**Example 2:**

<pre><code><strong>Input: nums = [0]
</strong><strong>Output: [[],[0]]
</strong></code></pre>

&#x20;

**Constraints:**

* `1 <= nums.length <= 10`
* `-10 <= nums[i] <= 10`
* All the numbers of `nums` are **unique**.

## Intuition

```
Approach:

Power Set Method(Bit MAsking)
```

### Links

<https://leetcode.com/problems/subsets/description/>

### Video Links

<https://www.youtube.com/watch?v=b7AYbpM5YrE&ab_channel=takeUforward>

### Approach 1:

```
```

{% code title="C++" lineNumbers="true" %}

```cpp
class Solution {
public:
    void gen_sets(vector<int>& nums, int index, int n, vector<vector<int>> &a, 
                    vector<int> &temp){

        if(index==n){
            a.push_back(temp);
            return ;
        }

        gen_sets(nums,index+1,n,a,temp);
        temp.push_back(nums[index]);
        gen_sets(nums,index+1,n,a,temp);
        temp.pop_back();
    }

    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>>a;
        vector<int>temp;
        gen_sets(nums,0,nums.size(),a,temp);

        return a;
    }
};
```

{% endcode %}

### Approach 2:

```
```

{% code title="C++" lineNumbers="true" %}

```cpp
class Solution {
public:
    vector<vector<int>> subsets(vector<int>& nums) {
        int n = nums.size();
        vector<vector<int>> ans;
        for(int i=0; i<(1<<n); i++){
            vector<int> temp;
            
            for(int j=0; j<n; j++){
                if(i & (1<<j))
                    temp.push_back(nums[j]);
            }

            ans.push_back(temp);
        }

        return ans;
    }
};
```

{% endcode %}

### Approach 3:

```
```

{% code title="C++" lineNumbers="true" %}

```cpp
```

{% endcode %}

### Approach 4:

```
```

{% code title="C++" lineNumbers="true" %}

```cpp
```

{% endcode %}

### Similar Problems

###
