1 题目
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],
[]
]
2 尝试解
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<int> temp;
vector<vector<int>> result;
if(nums.size() == 0) {
result.push_back(temp);
return result;
}
int index = 0;
getSubset(nums,index,result,temp);
return result;
}
void getSubset(vector<int>&nums, int index, vector<vector<int>>& result,vector<int> &temp){
if(index == nums.size()-1) {
temp.push_back(nums[index]);
result.push_back(temp);
temp.pop_back();
result.push_back(temp);
return;
}
temp.push_back(nums[index]);
getSubset(nums,index+1,result,temp);
temp.pop_back();
getSubset(nums,index+1,result,temp);
}
};
3 标准解
class Solution {
public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> subs;
vector<int> sub;
subsets(nums, 0, sub, subs);
return subs;
}
private:
void subsets(vector<int>& nums, int i, vector<int>& sub, vector<vector<int>>& subs) {
subs.push_back(sub);
for (int j = i; j < nums.size(); j++) {
sub.push_back(nums[j]);
subsets(nums, j + 1, sub, subs);
sub.pop_back();
}
}
};