位运算
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> result;
int max_num = 1 << nums.size();
for (int i = 0 ; i < max_num;i++){
vector<int> item;
for(int j = 0;j < nums.size();j++){
if(i & (1 << j)){
item.push_back(nums[j]);
}
}
result.push_back(item);
}
return result;
}
};
#回溯法
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<int> item;
vector<vector<int> >result;
result.push_back(item);
Creatset(0,nums,item,result);
return result;
}
void Creatset(int i,vector<int> &nums,
vector<int>& item, vector< vector<int> > &result ){
if( i >= nums.size() ){
return;
}
item.push_back(nums[i]);
result.push_back(item);
Creatset(i + 1,nums,item,result);
item.pop_back();
Creatset(i + 1,nums,item,result);
}
};