题目
给定一个非负整数 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/problems/pascals-triangle/description/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路图
代码
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> result = new ArrayList();
// 循环numRows次,生成numRows个list
for(int i=0;i<numRows;i++){
// 创建一个每行的list
ArrayList<Integer> innerlist = new ArrayList();
// 循环往innerList中添加元素
for(int k=0;k<=i;k++){
// 如果是第一个和最后一个元素,赋值为1
if(k==0 || k==i){
innerlist.add(1);
}else{
// 添加中间元素
// 获取数组中的元素时,需要用get属性
// 假设是第k=2,即第三个位置的值,需要计算的是i-1行(即上一行)的,
innerlist.add(result.get(i-1).get(k-1)+result.get(i-1).get(k));
}
}
result.add(innerlist);
}
return result;
}
}
运行结果:
numRows =5
输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
预期结果:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
numRows =1
输出:[[1]]
预期结果:[[1]]