杨辉三角

问题陈述

给定一个正整数,输出该杨辉三角的每行。

1
2
3
4
5
6
7
8
9
10
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
杨辉三角:起始为1;每行开始和末尾都为1;中间的第i个元素等于上一行的第i个元素加上第i-1个元素之和。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution{
public List<List<Integer>> yanghuiTriangle(int rownums){
List<List<Integer>> triangle=new ArrayList<>();
if(rownums==0) return triangle;
//添加第一行元素
triangle.add(new ArrayList<>());
triangle.get(0).add(1);
for(int i=1;i<rownums;i++){
List<Integer> currow=new ArrayList<>();
List<Integer> prerow=triangle.get(i-1);

row.add(1);
//第j行同样有j个元素,从第二个元素开始,到倒数第二个的计算
for(int j=1;j<rownums;j++){
row.add(prerow.get(j-1)+prerow.get(j));
}
//添加末尾元素
row.add(1);
triangle.add(row);
}
return triangle;
}
}