来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/pascals-triangle/
题目
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
示例:
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
思路
很明显,第N层的元素,循环N次即可,并且对应的值可以通过list.get(n-1)层的元素相加拿到,边上的元素固定设置为1。
代码
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> result = new ArrayList<>();
// 从第一层开始
for (int i = 0; i < numRows; ++i) {
List<Integer> temp = new ArrayList<>();
for (int sub = 0; sub <= i; ++sub) {
if (sub == 0 || sub == i) {
// 边上的元素固定放1即可
temp.add(1);
} else {
// 取上一层的两个元素
temp.add(result.get(i - 1).get(sub - 1) + result.get(i - 1).get(sub));
}
}
result.add(temp);
}
return result;
}
结果

网友评论