这道题其实就是找规律,从图中我们不难看出每一层的长度其实就是1,2,3,4.....
所以题目要求我们求numRows层的杨辉三角,那么最外层的循环就是
for (int i = 0; i < numRows; i++)
定义一个row来装每一层的结果List<Integer> row = new ArrayList<>();
再用 for (int j = 0; j <= i; j++) 来填每一层
再继续观察我们发现每一层的规律就是第一个数和最后一个数必然是1
所以有if判断if (j == 0 || j == i){row.add(1);}
对于普遍位置,其实就是上一层当前位置的值,加上一个元素的值
else {row.add(res.get(i - 1).get(j - 1) + res.get(i - 1).get(j));}
import java.util.ArrayList;
import java.util.List;
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<>();
if (numRows == 0) {
return res;
}
for (int i = 0; i < numRows; i++) {
List<Integer> row = new ArrayList<>();
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
row.add(1);
} else {
row.add(res.get(i - 1).get(j - 1) + res.get(i - 1).get(j));
}
}
res.add(row);
}
return res;
}
}