Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
给定一个非负整数 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) 链接:leetcode-cn.com/problems/pa… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、思路分析:

杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1. 第n行的数字个数为n个. 第n行的第k个数字为组合数. 第n行数字和为2n − 1. 除每行最左侧与最右侧的数字以外,每个数字等于它的左上方与右上方两个数字之和
由此性质写出整个杨辉三角形.
利用上一行的数据计算当前行的数据,前后填充 1,并保存上一行的数据
三、AC代码
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<>();
for(int i = 0; i < numRows; i++){
List<Integer> list = new ArrayList<>();
for(int j = 0; j <= i; j++){
if (j == 0 || j == i){
list.add(1);
} else {
List<Integer> prev = res.get(i - 1);
int num = prev.get(j) + prev.get(j - 1);
list.add(num);
}
}
res.add(list);
}
return res;
}
}
四、总结:
掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐