
一、核心思路
利用二进制枚举所有可能情况。
二、代码实现
cpp
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;
}
};