1. 题目
2. 思路
(1) 递归
- 利用递归得到上一层的结果,根据上一层的结果计算这一层的结果即可。
(2) 模拟法
3. 代码
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public List<List<Integer>> generate(int numRows) {
if (numRows == 1) {
return new ArrayList<List<Integer>>() {
{
add(new ArrayList<Integer>() {
{
add(1);
}});
}};
}
List<List<Integer>> res = generate(numRows - 1);
List<Integer> pre = res.get(res.size() - 1);
List<Integer> cur = new ArrayList<>();
cur.add(1);
for (int i = 1; i < pre.size(); i++) {
cur.add(pre.get(i - 1) + pre.get(i));
}
cur.add(1);
res.add(cur);
return res;
}
}
class Solution1 {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<>();
List<Integer> cur = new ArrayList<>();
cur.add(1);
res.add(cur);
List<Integer> pre = cur;
while (numRows > 1) {
cur = new ArrayList<>();
cur.add(1);
for (int i = 1; i < pre.size(); i++) {
cur.add(pre.get(i - 1) + pre.get(i));
}
cur.add(1);
res.add(cur);
pre = cur;
numRows--;
}
return res;
}
}