Description
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>ans;
permutation(nums,result,ans,0);
return result;
}
void permutation(vector<int>& nums,vector<vector<int>> &result,vector<int>ans,int start){
result.push_back(ans);
if(start>=nums.size()){
return ;
}
for(int i=start;i<nums.size();i++){
ans.push_back(nums[i]);
permutation(nums,result,ans,i+1);
ans.pop_back();
}
}
};
参考文献
[编程题]subsets