[LeetCode] 77. Combinations Java
题目:
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], ]
题意及分析:给出一个n和k,要求求出由n中k个不同的数组成是序列,序列为升序排序。这道题要求所有可能的情况,显然我们可以使用回溯的方法求解,对于每次判断的边界条件为:后面的数要大于前面的数。而且由于这里1到n肯定是递增的,所以继续进行下一层运算的条件可以为 当前位置后面的数。具体看代码实现。
代码:
public class Solution {
public List<List<Integer>> combine(int n, int k) {
List<List<Integer>> resList=new ArrayList<>();
List<Integer> list=new ArrayList<>();
backtracking(resList, list, 1, 1,n, k);
return resList;
}
public void backtracking(List<List<Integer>> resList,List<Integer> list,int t,int start,int n, int k) {
if(t>k){
resList.add(new ArrayList<>(list));
}else{
for(int i=start;i<=n;i++){
list.add(i);
backtracking(resList, list, t+1,i+1, n, k);
list.remove(list.size()-1);
}
}
}
}

浙公网安备 33010602011771号