Get all of the subsets of the set

1. The problem

leetcode subset

我们需要得到所有的子集合

2. The solution

在中学的时候我们就学过,子集的数目为2n2^n 对应的是一个长为n的二进制
子串的所有可能性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>>ans = {};
int n = nums.size();
int num = pow(2, n), i = 0;
while (i < num) {
/* code */
vector<int>temp;
for (int j = 0; j < n; j++) {
if (i & (1<<j))
temp.push_back(nums[j]);
}
ans.push_back(temp);
i++;
}
return ans;
}
};