[LeetCode] 78. Subsets
Given a set of distinct integers, nums, return all possible subsets.
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],
[]
]
給定一個不重複數字的數組,求它的所有子集。
同樣是求長度小於等於|num|的組合,同上題。
class Solution {
public:
void getOneComb(vector<int>& src, int begin, int end, int k, vector<int>& res, vector<vector<int>>& ans) {
if (k == 0) {
ans.push_back(res);
return;
}
for (int i=begin; i<end; ++i) {
res.push_back(src[i]);
getOneComb(src, i+1, end, k-1, res, ans);
res.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
int begin = 0;
int end = nums.size();
vector<vector<int>> ans;
vector<int> res;
int k = end;
for (int i=0; i<=k; ++i) {
getOneComb(nums, begin, end, i, res, ans);
}
return ans;
}
};