118. 杨辉三角

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; // 返回完整的杨辉三角
    }
}
posted @ 2025-06-02 17:45  星星永远发着光  阅读(13)  评论(1)    收藏  举报