leetcode78 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。
解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
1.二进制
假设一个集合为A = {1,2,3},那么我们用三位二进制数表示选择的集合元素下标。
0/1序列 | 子集 |
---|---|
000 | {} |
001 | {3} |
010 | {2} |
100 | {1} |
011 | {2,3} |
101 | {1,3} |
110 | {1,2} |
111 | {1,2,3} |
可见,对于有N个元素的集合,共有 2 N 2^{N} 2N个子集,于是我们可以枚举
所有可能
class Solution {
public:
vector<int> t;
vector<vector<int>> ans;
vector<vector<int>> subsets(vector<int>& nums) {
int n = nums.size();
for