
题目要求给定非负整数numRows生成杨辉三角的前numRows行每个数等于它左上方和右上方的数之和。示例numRows5输出[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]。思路按行迭代先创建二维列表pascalTriangle用来存所有行。手动初始化第 1 行新建row0[1]加入pascalTriangle。从第 2 行开始用for (i1; inumRows; i)逐行生成i是行下标首手动add(1)中间上一行第j个元素 上一行第(j-1)个元素尾手动add(1)补充这份写法默认numRows1否则会先加第一行导致结果不符合题意。需要在开头加if (numRows0) return new ArrayList();。https://leetcode.cn/problems/pascals-triangle/description/codeclassSolution{publicListListIntegergenerate(intnumRows){// 用来存放最终结果杨辉三角的每一行都是一个 ListIntegerListListIntegerpascalTrianglenewArrayList();// 第 1 行下标 0固定为 [1]ListIntegerrow0newArrayList();row0.add(1);pascalTriangle.add(row0);// 从第 2 行开始生成i 表示行下标1 - 第2行2 - 第3行 ...for(inti1;inumRows;i){ListIntegertmpRownewArrayList();// 每一行的第 1 个元素固定是 1tmpRow.add(1);// 取出上一行用来计算当前行的中间元素ListIntegerpreRowpascalTriangle.get(i-1);// 计算中间元素// 当前行第 j 个元素 上一行第 j 个元素 上一行第 (j-1) 个元素// j 从 1 到 i-1不包含两侧的 1for(intj1;ji;j){tmpRow.add(preRow.get(j)preRow.get(j-1));}// 每一行的最后 1 个元素固定是 1tmpRow.add(1);// 把当前行加入结果pascalTriangle.add(tmpRow);}// 返回完整的杨辉三角returnpascalTriangle;}}补充这段代码默认numRows 1如果可能传入0需要在开头加判断直接返回空列表。