import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @param k int整型
* @return int整型二维数组
*/
public static ArrayList<ArrayList<Integer>> lists = new ArrayList<ArrayList<Integer>>();;
public int[][] combine (int n, int k) {
// write code here
search(1,k,n,new ArrayList<>());
int[][] arr = new int[lists.size()][k];
for(int i=0;i<lists.size();i++){
for(int j=0;j<lists.get(i).size();j++) {
arr[i][j] = lists.get(i).get(j);
}
}
return arr;
}
public void search(int cur,int capacity,int n,ArrayList<Integer> list){
if(list.size()==capacity){
lists.add(new ArrayList<>(list));
return;
}
if(cur > n){
return;
}
list.add(cur);
search(cur+1,capacity,n,list);
list.remove(list.size()-1);
search(cur+1,capacity,n,list);
}
}
本题主要考察的是二叉树的建立,所用语言为java,利用递归算法建立二叉树,跟之前的括号生成题目类似,只不过比之前括号生成题目多了一个参数,所以只需要在上题的基础上进行修改,多增加一个相应的参数。

京公网安备 11010502036488号