侧边栏壁纸
博主头像
GabrielxD

列車は必ず次の駅へ。では舞台は?私たちは?

  • 累计撰写 675 篇文章
  • 累计创建 128 个标签
  • 累计收到 22 条评论

目 录CONTENT

文章目录

【动态规划, 数学】杨辉三角

GabrielxD
2022-04-17 / 0 评论 / 0 点赞 / 170 阅读 / 267 字
温馨提示:
本文最后更新于 2022-07-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
## 题目
118. 杨辉三角

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。

sp20220416_215135_948.gif (260×240) (gabrielxd.top)

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1
输出: [[1]]

提示:

  • 1 <= numRows <= 30

解题

方法一:递推

思路

杨辉三角中每行第一个元素与最后一个元素固定是 1 ,其他元素是其 左上元素 + 右上元素。初始化第一行只有一个元素 1 其它行依次计算即可.

代码

class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ans = new ArrayList<>();
        List<Integer> firstRow = new ArrayList<>();
        firstRow.add(1);
        ans.add(firstRow);

        for (int i = 1; i < numRows; i++) {
            List<Integer> row = new ArrayList<>();
            row.add(1);
            ans.add(row);
            for (int j = 1; j < i; j++) {
                List<Integer> prevRow = ans.get(i - 1);
                row.add(prevRow.get(j - 1) + prevRow.get(j));
            }
            row.add(1);
        }

        return ans;
    }
}
0

评论区