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,利用递归算法建立二叉树,跟之前的括号生成题目类似,只不过比之前括号生成题目多了一个参数,所以只需要在上题的基础上进行修改,多增加一个相应的参数。