题目:
Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
For example,
If nums = [1,2,3]
, a solution is:
[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解读:给与一组整数数组,元素不重复,返回这个数组所以可能的组合。结果中的组合不可重复。
思路:采用递归算法。每次push一个元素,把形成的新解放入result中,如果还有下一个元素,则继续push。直到没有下一个元素了,把最后一个元素pop出来,继续下一个元素的递归。
代码:
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> result;
vector<int> solution;
result.push_back(solution);
int low = 0;
ssubsets(nums, low, solution, result);
return result;
}
void ssubsets(vector<int>& nums, int low,vector<int>&solution,vector<vector<int>>& result){
while(low < nums.size()){
solution.push_back(nums[low]);
result.push_back(solution);
ssubsets(nums, low+1, solution, result);
solution.pop_back();
low++;
}
return;
}
};