Combination Problems
Combination containing
k
elements is a SUBSET containingk
elements.
possible combinations of size=k
Subsets having size() == k
create all SUBSETs and then only add SUBSETs having size() == k
class Solution {
public:
vector<vector<int>> ans;
void foo(vector<int>& v,vector<int>& subset, int pos, int k) {
if (subset.size() == k) {
ans.emplace_back(subset);
}
for (int i=pos; i<v.size(); i++) {
// NO duplicates are present here
subset.emplace_back(v.at(i));
foo(v, subset, i+1, k);
subset.pop_back();
}
}
vector<vector<int>> combine(int n, int k) {
vector<int> v;
int sum = 0;
for (int i=0; i<n; i++) {
v.emplace_back(++sum); // 1,2,3...
}
vector<int> subset;
int pos = 0;
foo(v, subset, pos, k);
return ans;
}
};