-
题目描述
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。 -
实现效果
输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] -
解题思路
观察规律
1
11
121
1331
14641
可见 每一行左右都是1,可以先对其进行初始化
中间数据满足第i行的第j个数据 = 第i-1行的第j-1个数据和第i-1行第j个数据相加的和 -
代码实现
public static List<List<Integer>> generate(int numRows) {
List<List<Integer>> ret = new ArrayList<List<Integer>>(); //创建大列表
// 循环numrows次 创建小列表 并给小列表赋值
for(int i=0; i<numRows; i++) {
List<Integer> row = new ArrayList<Integer>();
for(int j=0; j<=i; j++) {
// 初始化每一行前后=1
if(j==0 || j==i) {
row.add(1);
}else {
row.add(ret.get(i-1).get(j-1) + ret.get(i-1).get(j));
}
}
ret.add(row);
}
return ret;
}