地址:https://leetcode.com/problems/subsets/
题目:
Given a set of distinct integers, n u m s nums nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:

理解:
用backtracking解决。
实现:
和前面的不太一样的是,这里每次调用dfs直接把tmp加进去就好了,因为所有大小的子集都要包含在里面。不需要判断tmp和目标集合大小是否相同。
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> tmp;
dfs(res, tmp, nums, 0);
return res;
}
private:
void dfs(vector<vector<int>>& res, vector<int>& tmp, vector<int>& nums, int begin) {
res.push_back(tmp);
for (int i = begin; i<nums.size(); ++i) {
tmp.push_back(nums[i]);
dfs(res, tmp, nums, i + 1);
tmp.pop_back();
}
}
};
本文深入探讨了LeetCode上的一道经典问题——子集问题,通过递归回溯算法,详细讲解了如何求解给定整数集合的所有可能子集(幂集),并确保解集中不包含重复的子集。
290

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



