class Solution {
public 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>();
// 内层循环:生成当前行的每个元素(第 i 行有 i+1 个元素)
for (int j = 0; j <= i; ++j) {
// 情况1:当前行首尾元素(索引0或i)值为1
if (j == 0 || j == i) {
row.add(1);
}
// 情况2:中间元素 = 上一行左上方元素(j-1) + 上一行正上方元素(j)
else {
int prevRow = i - 1; // 上一行索引
int left = ret.get(prevRow).get(j - 1); // 左上角元素
int right = ret.get(prevRow).get(j); // 正上方元素
row.add(left + right); // 计算当前元素值
}
}
// 将生成好的当前行添加到结果列表
ret.add(row);
}
return ret; // 返回完整的杨辉三角
}
}