刷题83 杨辉三角

42 阅读1分钟

给定一个非负整数 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

题解:

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>>res=new ArrayList<>();
        if(numRows==0) return res;
        List<Integer>firstRow=new ArrayList<>();
        firstRow.add(1);
        res.add(new ArrayList(firstRow));
        List<Integer>preRow=firstRow;
        List<Integer>nextRow=new ArrayList<>();
        for(int i=2;i<=numRows;i++){
            if(i!=2)
                preRow=nextRow;//保存上一行数据
            nextRow=new ArrayList<>();
            nextRow.add(1);
            for(int j=0;j<preRow.size()-1;j++)
                nextRow.add(preRow.get(j)+preRow.get(j+1));
            nextRow.add(1);
            res.add(new ArrayList<>(nextRow));
        }
        return res;

    }
}