Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.
For example,
If n = 4 and k = 2, a solution is:
[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
class Solution {
private:
vector<vector<int> > result;
vector<int> temp;
public:
vector<vector<int> > combine(int n, int k) {
temp.resize(k);
result.clear();
if(k>n||n<1||k<1) return result;
solve(n,k,0,1);
return result;
}
void solve(int n,int k, int iteration,int start)
{
if(iteration == k)
{
result.push_back(temp);
return;
}
for(int i = start ;i <= n; i++)
{
temp.push_back(i);
solve(n,k,iteration+1,i+1);
temp.pop_back();
}
}
};