78.子集
思路:回溯
class Solution {
public:
vector<int>tmp;
vector<vector<int>>res;
vector<vector<int>> subsets(vector<int>& nums) {
backtrack(0,nums);
res.push_back({});
return res;
}
void backtrack(int start,vector<int>& nums){
if(start>=nums.size()){
return;
}
for(int i=start;i<nums.size();i++){
tmp.push_back(nums[i]); //添加每一个“结点”
res.push_back(tmp);
backtrack(i+1,nums);
tmp.pop_back();
}
}
};