ps:题目来自力扣
给定一个非负整数 numRows
,生成「杨辉三角」的前 numRows
行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
import java.util.ArrayList;
import java.util.List;
class Solution {
public List<List<Integer>> generate(int numRows) {
// 用于存储杨辉三角的所有行
List<List<Integer>> triangle = new ArrayList<>();
// 如果要求生成的行数为 0,直接返回空列表
if (numRows == 0) {
return triangle;
}
// 生成第一行,第一行只有一个元素 1
List<Integer> firstRow = new ArrayList<>();
firstRow.add(1);
triangle.add(firstRow);
// 从第二行开始生成杨辉三角
for (int i = 1; i < numRows; i++) {
// 获取上一行
List<Integer> prevRow = triangle.get(i - 1);
// 用于存储当前行的元素
List<Integer> currentRow = new ArrayList<>();
// 当前行的第一个元素为 1
currentRow.add(1);
// 计算当前行中间的元素,每个元素是它左上方和右上方的数的和
for (int j = 1; j < i; j++) {
currentRow.add(prevRow.get(j - 1) + prevRow.get(j));
}
// 当前行的最后一个元素为 1
currentRow.add(1);
// 将当前行添加到杨辉三角中
triangle.add(currentRow);
}
return triangle;
}
}