题目
Leetcode 78. 子集
代码(首刷自解)
class Solution {
public:
vector<vector<int>> res;
vector<int> ans;
vector<vector<int>> subsets(vector<int>& nums) {
dfs(nums, 0);
return res;
}
void dfs(vector<int>& nums, int k) {
res.push_back(ans);
for(int i = k; i < nums.size(); i++) {
ans.push_back(nums[i]);
dfs(nums, i+1);
ans.pop_back();
}
}
};
代码(9.14 二刷自解)
class Solution {
public:
vector<vector<int>> res;
vector<vector<int>> subsets(vector<int>& nums) {
vector<int> tmp;
backtrack(nums, 0, tmp);
return res;
}
void backtrack(vector<int>& nums, int k, vector<int>& tmp) {
res.emplace_back(tmp);
for(int i = k; i < nums.size(); i++) {
tmp.emplace_back(nums[i]);
backtrack(nums, i+1, tmp);
tmp.pop_back();
}
}
};