题目
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
代码模板:
class Solution {
public List<List<Integer>> generate(int numRows) {
}
}
分析
先将第一行元素添加进去,然后从第二行开始循环,一开始插入一,然后拿到上一行的数据,将上一行从第二个数开始,当前数加上前面一个数的和,插入这一行的结果里面,最后将这一行的最后插入一个1。
解答
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> result = new ArrayList<>();
if(numRows<1){
return result;
}
//添加第一行元素
List<Integer> num1Row = new ArrayList<>();
num1Row.add(1);
result.add(num1Row);
//从第二行开始
for(int i=1;i<numRows;i++){
List<Integer> numRowList = new ArrayList<>();
numRowList.add(1);
List<Integer> numRowPreList = result.get(i-1);
for(int j=1;j<numRowPreList.size();j++){
numRowList.add(numRowPreList.get(j)+numRowPreList.get(j-1));
}
numRowList.add(1);
result.add(numRowList);
}
return result;
}
}