Recursive
class Solution {
public:
vector<vector<int>> ret;
vector<int> temp;
vector<vector<int>> combine(int n, int k) {
dfs(n,k,1,0);
return ret;
}
void dfs(int n, int k, int s,int d){
if(d==k){
ret.push_back(temp);
}
for(int i=s;i<=n;++i){
temp.push_back(i);
dfs(n,k,i+1,d+1);
temp.pop_back();
}
}
};
recursive 2
class Solution {
public:
vector<vector<int>> ret;
vector<int> p;
vector<vector<int>> combine(int n, int k) {
p.resize(k);
dfs(1,n,k);
return ret;
}
void dfs(int i,int n, int k){
while(i<=n){
p[p.size()-k]=i++;
if(k<=1){
ret.push_back(p);
}else{
dfs(i,n,k-1);
}
}
}
};
Last updated
Was this helpful?