给定一个非负整数 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;
}
}
标签:格子,示例,List,numRows,杨辉三角,三角形
From: https://www.cnblogs.com/xiaochaofang/p/16928818.html