动态规划

杨辉三角

简单#118Java时间 O(r²)空间 O(r²),输出

题目要做什么

生成杨辉三角的前 numRows 行。每行两端为 1,其余元素等于上一行相邻两个元素之和。

题目示例输入numRows = 5
题目示例输出[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

01 为什么这样做

逐行建立状态。第 r 行第 c 个元素来自上一行的 c−1 和 c,边界位置直接填写 1。

始终成立的条件

计算一行之前,所有之前的行都已经完整生成。

02 看见算法执行

动画与代码同步

修改输入,播放自己的例子

当前使用题目示例
修改输入会改变执行过程;预期输出用于核对结果。
数组 / nums步骤 1
执行状态
本次演示输出播放到最后查看

Solution.java参考解法
1class Solution {2    public List<List<Integer>> generate(int numRows) {3        List<List<Integer>> triangle = new ArrayList<>();4        for (int r = 0; r < numRows; r++) {5            List<Integer> row = new ArrayList<>();6            for (int c = 0; c <= r; c++) {7                if (c == 0 || c == r) row.add(1);8                else row.add(triangle.get(r - 1).get(c - 1) + triangle.get(r - 1).get(c));9            }10            triangle.add(row);11        }12        return triangle;13    }14}

键盘控制:A 后退 · D 前进

编程练习

↑↓ 选择↵ 打开Pagefind 全文检索