杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:

输入: numRows = 1
输出: [[1]]

提示:

1 <= numRows <= 30

作者:力扣 (LeetCode)
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xncfnv/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先观察这个三角形的特点,杨辉三角形是一个等边三角形,其中左边和右边每个格子的值都是1。
三角形斜的不好看,如果我们把这个三角形往左边拉直就会发现,除了两边的都是1以外,其他每个格子的值都是他正上面格子和左上角格子的和

class Solution {
    public List<List<Integer>> generate(int numRows) {
        //结果值
        List<List<Integer>> res = new ArrayList<>();
        //列表
        List<Integer> list = new ArrayList<Integer>();
        for(int i=0;i<numRows;i++){
            //头部尾部添加1,为1121,11331
             list.add(0,1);
             //避免头尾,从1开始他的值是上面和右上之和
             for(int j=1;j<list.size()-1;j++){
                 list.set(j,list.get(j) + list.get(j+1));
             }
             //每次添加要新建列表放入,不然直接add(list)会把原有的值改变
            res.add(new ArrayList<>(list));
        }
        return res;
    }
}

posted @ 2022-11-27 00:58  网抑云黑胶SVIP用户  阅读(35)  评论(0)    收藏  举报