-
Notifications
You must be signed in to change notification settings - Fork 0
/
118. Pascal's Triangle
37 lines (31 loc) · 1.59 KB
/
118. Pascal's Triangle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Given an integer numRows, return the first numRows of Pascal's triangle.
In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:
Example 1:
Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Example 2:
Input: numRows = 1
Output: [[1]]
简单地说,上面的代码利用了循环来构建杨辉三角,并使用一个列表存储每一行的数字。首先,通过循环创建每一行,并将每个元素初始化为 1。如果当前行不是第一行和最后一行,则通过另一个循环计算该行的中间元素的值。最后,将该行的数字添加到结果列表中,并返回该结果列表。
class Solution {
public List<List<Integer>> generate(int numRows) {
// 创建一个结果列表,用来存储每一行的数字
List<List<Integer>> result = new ArrayList<>();
// 循环每一行
for (int i = 0; i < numRows; i++) {
// 创建一个长度为 i + 1 的行,并将每个数初始化为 1
List<Integer> row = new ArrayList<>(Collections.nCopies(i + 1, 1));
// 如果当前行不是第一行和最后一行,则计算该行中间元素的值
if (i > 1) {
for (int j = 1; j < i; j++) {
// 计算该元素的值,即上一行相邻两个元素的和
row.set(j, result.get(i - 1).get(j - 1) + result.get(i - 1).get(j));
}
}
// 将当前行添加到结果列表中
result.add(row);
}
// 返回结果列表
return result;
}
}