78. 子集 - 力扣(LeetCode)
利用二进制枚举的方式,把所有的情况都表示出来
比如我们测试用例是[1,2,3] 下标和值对应是 0-1 1-2 2-3
我们用0到7的二进制就能把所有情况枚举出来
0:0000 ---- 表示三个元素都不选 []
1:0001-----表示只选第一个元素 [1]
2:0010 -----表示只选第二个元素[2]
3:0011 ----- 表示选择前两个元素 [1,2]
4:0100 ----- 表示选择第三个元素 [3]
5:0101 ---- 表示选择[1,3]
6:0110 ------表示选择[2,3]
7:0111 ----- 表示选择[1,2,3]
终止条件是8 1000 也就是1<<3
代码:
class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ret;int n = nums.size();for(int i = 0;i<(1<<n);i++){vector <int> tmp;for(int j = 0;j<n;j++){if((i>>j)&1) tmp.push_back(nums[j]);}ret.push_back(tmp);}return ret;}
};