题目
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
分析
充分利用杨辉三角的特性,俩边都是1,中间元素等于上一行当前列元素+上一行当前列元素的前一个元素和
java
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
public class pascaTriangle {
public static void main(String[] args) {
List<List<Integer>> res = getTrain(5);
for(List<Integer> lin : res) {
for(Integer data:lin) {
System.out.print(data + " ");
}
System.out.println();
}
}
public static List<List<Integer>> getTrain(int n) {
Integer[][] dp = new Integer[n][0];
for(int i = 0;i<n;i++) {
dp[i] = new Integer[i+1];
Arrays.fill(dp[i],1);
for(int j =1;j<i;j++) {
dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
}
}
List<List<Integer>> res = new ArrayList();
for(int i = 0;i<n;i++) {
res.add(Arrays.asList(dp[i]));
}
return res;
}
}