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], ]
public class Solution {
public static List<List<Integer>> ans = new ArrayList<List<Integer>>();
public static int[] path = new int[100];
public static int K = 0;
public static void robot(int idx, int n, int k){//idx [0, n]
if(k == 0){
List<Integer> tmp = new ArrayList<Integer>(k);
for(int i = 0; i < K; i++ ){
tmp.add(path[i]+1);
}
ans.add(tmp);
return;
}
for(int i = idx; i < n; i++){
path[k-1] = i;
robot(i + 1, n, k-1);
}
}
public List<List<Integer>> combine(int n, int k) {
ans.clear();
K = k;
robot(0,n,k);
return ans;
}
}