给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
这题的核心在于理解如何完成每个数是它左上方和右上方的数的和。
在观看题解之后,发现有的官方题解有些难以理解,之后翻阅网友们的题解找到个较易于理解的写法。核心就在于使用了每一行都建立一个arraylist来存放数据,将每行的数据逐一填好之后填写入总的arraylist中。
class Solution {
public List<List<Integer>> generate(int numRows) {
//创建一个Lists来存储list
List<List<Integer>> lists = new ArrayList<>();
for(int i = 0; i < numRows; i++) {
//每次创建一个list来保存
List<Integer> list = new ArrayList<>();
for (int j = 0; j <= i; j++) {
//判断是不是第一个和最后一个
if (j == 0 || j== i) {
//如果是直接添加1
list.add(1);
}else {
//获取上一行的list,然后获取它的下表
//这里j是不会等于0的,因为上面已经判断了,因此如果这个成立
//比如是第三行i为2,j为1的时候
//i-1也就是2-1,就获取了第二行的,然后获取它的值j-1也就是1-1
//也就获取了第二行第一个,得到1,然后加同样的第二行的第二个
//i-1也就是2-1,并且j为1也就是第二行的第二个
//不需要当心越界的情况,因为如果是最后一个,同样不会执行这个语句
list.add(lists.get(i-1).get(j-1)+lists.get(i-1).get(j));
}
}
//把list的内容添加到lists中
lists.add(list);
}
return lists;
}
}
作者:san-lang-4
链接:https://leetcode-cn.com/problems/pascals-triangle/solution/hao-xiang-qian-mian-ji-ge-ti-jie-mei-ren-yong-zhe-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/pascals-triangle
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。