给定一个非负整数 num ,生成杨辉三角的前 num 行。
杨辉三角中,每个数是左上方和右上方的数之和。
数据范围:
例如当输入为4时,对应的返回值为[[1],[1,1],[1,2,1],[1,3,3,1]],打印结果如下图所示:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param num int整型 * @return int整型二维数组 */ public int[][] generate (int num) { // write code here int[][]arr =new int[num][]; for(int i=0;i<num;i++){ arr[i]=new int[i+1]; for(int j=0;j<i+1;j++){ if(j!=0&&j!=i){ arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; }else{ arr[i][j]=1; } } } return arr; } }
public int[][] generate(int num) { // write code her int[][] dp = new int[num][]; for (int i = 0; i < num; i++) { dp[i] = new int[i+1]; for (int j = 0; j < dp[i].length; j++) { dp[i][j] = 1; } for (int j = 1; j < dp[i].length -1; j++) { dp[i][j] = dp[i-1][j-1] + dp[i-1][j]; } } return dp; }
public int[][] generate (int num) { int[][] arr=new int[num][]; for(int i=0;i<num;i++) { arr[i]=new int[i+1]; for(int j=0;j<arr[i].length;j++) { if(i==0||j==0||j==arr[i].length-1) arr[i][j]=1; else arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; } } return arr; }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型 * @return int整型二维数组 */ public int[][] generate (int num) { // write code here if(num == 1){ return new int[][]{{1}}; }else if(num == 2){ return new int[][]{{1}, {1, 1}}; }else{ ArrayList<List<Integer>> lists = new ArrayList<>(); // 先加入前两层 List<Integer> layer = new ArrayList<>(); layer.add(1); lists.add(new ArrayList<>(layer)); layer.add(1); lists.add(new ArrayList<>(layer)); for(int i = 2; i <= num; i++){ List<Integer> lastLayer = lists.get(i - 1); layer = new ArrayList<>(); layer.add(1); for(int k = 1; k < i; k++){ layer.add(lastLayer.get(k) + lastLayer.get(k - 1)); } layer.add(1); lists.add(new ArrayList<>(layer)); } // 把列表结果转成二维数组 int[][] res = new int[num][]; for(int i = 0; i < num; i++){ res[i] = new int[i + 1]; for(int k = 0; k < lists.get(i).size(); k++){ res[i][k] = lists.get(i).get(k); } } return res; } } }