深搜
class Solution {
public:
void subsets(vector<int>& nums,int sta,vector<vector<int>>& res,vector<int> ans)
{
if(sta>=nums.size())
{
res.push_back(ans);
return;
}
subsets(nums,sta+1,res,ans);
ans.push_back(nums[sta]);
subsets(nums,sta+1,res,ans);
}
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> ans;
subsets(nums,0,res,ans);
return res;
}
};
方法2:
位操作
000 -》[]
001 -》[1]
010 -》[2]
.
.
.
111 -》[1,2,3]
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
int n=nums.size();
int i,j;
for(i=0;i<(1<<n);i++)
{
vector<int> ans;
for(j=0;j<n;j++)
{
if(i&(1<<j))
ans.push_back(nums[j]);
}
res.push_back(ans);
}
return res;
}
};