难度中等451收藏分享切换为英文接收动态反馈
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
示例:
输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
class Solution {
List<List<Integer>> list = new ArrayList<>();
public List<List<Integer>> combine(int n, int k) {
backTrance(n,0,k,new ArrayList<>());
return list;
}
public void backTrance(int n,int index,int k,List<Integer> path){
if(k == 0){
list.add(new ArrayList<>(path));
return;
}
for(int i = index;i <= n;i++){
// 递归剪枝,不能选到选过的
if(i == index) continue;
path.add(i);
backTrance(n,i,k - 1,path);
path.remove(path.size() - 1);
}
}
}