Difficulty: Medium
Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
If n = 4 and k = 2, a solution is:
[
[2,4],
[3,4],
[2,3],
[1,2],
[1,3],
[1,4],
]
class Solution {
vector<vector<int> > res;
void helper(vector<int> &base,int n,int left,int j){
if(left==0){
res.push_back(base);
return ;
}
for(int i=j;i<=n;++i){
base.push_back(i);
helper(base,n,left-1,i+1);
base.pop_back();
}
}
public:
vector<vector<int>> combine(int n, int k) {
vector<int> base;
helper(base,n,k,1);
return res;
}
};