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; } };