# 【LeetCode】 78. Subsets
## Description
> Given a set of distinct integers, nums, return all possible subsets (the power set).
> Note: The solution set must not contain duplicate subsets.
> 給一個由不同整數構成的集合,回傳所有可能的子集合。
> 注意:答案不能包含重複的子集合。
## Example:
```
Example:
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
```
## Solution
* 用二進制去代表一個元素要不要放到新的子集合內。
* 假設原集合為`1` `2` `3` `4`,就宣告一個計數器從`0000`跑到`1111`,第`i`格如果為`1`,代表第`i`格的元素要放到新的集合中。
* `0000`代表空集合,`0101`代表`[2,4]`,`1110`代表`[1,2,3]`。
* 子集合的順序不重要。
### Code
```C++=1
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> ans;
for(int count=0;count<pow(2,nums.size());count++)
{
vector<int> temp;
for(int i = 0;i<nums.size();i++)
{
if(count&(int)pow(2,i))
temp.push_back(nums[i]);
}
ans.push_back(temp);
}
return ans;
}
};
```
###### tags: `LeetCode` `C++`