Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
Input: nums = [1,2,3] Output: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int> > result;
vector<int> path;
sort(nums.begin(), nums.end());
result.push_back(path);
dfs(nums, 0, path, result);
return result;
}
void dfs(vector<int> &nums, int pos, vector<int> &path, vector<vector<int> > &result)
{
if(pos==nums.size())
return;
for(int i=pos; i<nums.size(); i++)
{
path.push_back(nums[i]);
result.push_back(path);
dfs(nums,i+1, path, result);
path.pop_back();
}
}
};
本文介绍了一种生成给定整数集合所有可能子集(幂集)的算法,并提供了详细的C++实现代码。该算法通过深度优先搜索(DFS)递归地构建所有子集,确保结果中没有重复项。示例输入为[1,2,3]时,输出包括从空集到完整集合的所有可能组合。
273

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



