题目描述

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

 杨辉三角 随笔

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

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

示例:

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

分析

根据上面那个图,我们可以发现,第一行和第二行都由1组成。其他行的起始和结束都是1.内容由上一行相邻两个数组和组成。由此我们可以写出代码。

贴出代码

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        
        if(numRows == 0) 
            return res;
        
        for(int j = 0;j<numRows;j++) {
            List<Integer> row = new ArrayList<Integer>();
            row.add(1);
            
        for(int i = 1;i<j;i++) {
            List<Integer> prevRow = res.get(j-1);
            int temp = prevRow.get(i-1)+prevRow.get(i);
            row.add(temp);
        }
        
        if(j!=0)
            row.add(1);
        res.add(row);
        }
        return res;
    }
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄