【代码】杨辉三角

前言

LeetCode答案,语言Java

问题

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.ArrayList;
import java.util.List;

class Solution {
public List<List<Integer>> generate(int numRows) {

// 创建一个numRows*numRows的二维数组
int[][] arr = new int[numRows][numRows];
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < i+1; j++) {
/*
算法如果第一列或最后一列,则赋值为1
否则,赋值为"上一行的该列数"与"上一行的前一列数"的和
*/
if (j==0 || j==i) {
arr[i][j] = 1;
} else {
arr[i][j] = arr[i-1][j] + arr[i-1][j-1];
}
}
}

// 把二维数组放入到嵌套集合中(舍弃二维数组中占位的0)
List l = new ArrayList();
for (int i = 0; i < numRows; i++) {
List list = new ArrayList();
for (int j = 0; j < i+1; j++) {
list.add(arr[i][j]);
}
l.add(list);
}

return l;
}

}

完成