
解题思路:
回溯法
class Solution {
public:
vector<vector<int>>res;
vector<int>temp;
void dfs(int curr,vector<int> nums){
if(curr==nums.size()){
res.push_back(temp);
return;
}
//考虑选择当前位置
temp.push_back(nums[curr]);
dfs(curr+1,nums);
temp.pop_back();
//考虑不选择当前位置,直接往后走
dfs(curr+1,nums);
}
vector<vector<int>> subsets(vector<int>& nums) {
dfs(0,nums);
return res;
}
};
该博客介绍了如何使用回溯法来解决寻找数组所有子集的问题。代码中定义了一个Solution类,包含一个dfs函数进行深度优先搜索,通过递归在数组中选择或不选择当前元素来生成所有可能的子集。最后,将结果存储在res向量中返回。

被折叠的 条评论
为什么被折叠?



