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