题目描述(牛客网):
给出一个值numRows,生成杨辉三角的前numRows行
例如,给出 numRows = 5,
在Pascal三角形中,每个数字都是其正上方两个数字的和。
例:
Input: 5
Output:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
主要思想:
题意是给出行数,输出杨辉三角形。
注意此时的索引是从1开始的。行数为1时,此行的元素为1个;行数为2时,此行的元素为2个…
因此,第一层遍历次数为 行数,但为了与List的索引相对应,故从 0遍历到numRows-1;
第二层遍历次数为具体的行值,故从 0 遍历到 i。
实现代码:
import java.util.ArrayList;
public class Solution {
public ArrayList<ArrayList<Integer>> generate(int numRows) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
if (numRows <= 0) {
return list;
}
for (int i = 0; i < numRows; i++) {
ArrayList<Integer> sub = new ArrayList<>();
for (int j = 0; j <= i; j++) {
if ((j == 0) || (j == i)) {
sub.add(1);
} else {
ArrayList<Integer> preSub = list.get(i - 1);
sub.add(preSub.get(j - 1) + preSub.get(j));
}
}
list.add(sub);
}
return list;
}
}