20190902:(leetcode习题)帕斯卡三角形
程序员文章站
2022-03-06 08:02:20
...
题目
大致思路
- 根据上一行来计算下一行
- 每一行开头和结尾都是1
代码实现
class Solution {
public List<List<Integer>> generate(int numRows) {
//如果行数为0,则直接返回空list
if (numRows == 0) return new ArrayList<>();
//新建res存储结果
List<List<Integer>> res = new ArrayList<>();
//第一个list为first
ArrayList first = new ArrayList<>();
//first为1
first.add(1);
//存入res
res.add(first);
//当结果中数的个数<numRows时,继续计算接下来的数
while (res.size() < numRows) {
//先确定res的数的个数
int size = res.size();
//新建增加的list al
ArrayList<Integer> al = new ArrayList<>();
//当个数不足size时,
for (int i = 0; i <= size ; i++) {
//第一行和最后一行直接先添加前后的1,
if (i == 0 || i == size ) {
al.add(1);
} else {
//根据上一行来计算下一行的数据。
al.add(res.get(size-1).get(i-1) + res.get(size-1).get(i));
}
}
//最后将res中加入al。
res.add(al);
}
return res;
}
}