dp--118.杨辉三角/easy 理解度A

118.杨辉三角

  • 1、题目
  • 2、题目分析
  • 3、解题步骤
  • 4、复杂度最优解代码示例
  • 5、抽象与扩展

1、题目

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

dp--118.杨辉三角/easy 理解度A_第1张图片

示例 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
Related Topics
  • 数组
  • 动态规划

2、题目分析

1、每层的首、尾 2 个位置,直接设置为 1
2、每层除了首、尾,本层j位置的值 = 上层j-1位置的值 + 上层j位置的值

3、解题步骤

1、循环生成杨辉三角的层数
2、处理指定层数(i层)的数据
2.1、每层的首、尾 2 个位置,直接设置为 1
2.2、每层除了首、尾,本层j位置的值 = 上层j-1位置的值 + 上层j位置的值
3、将本层结果存入杨辉三角

4、复杂度最优解代码示例

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> res = new ArrayList<>();

        for (int i = 0; i < numRows; i++) {
            // 1、循环生成杨辉三角的层数
            List<Integer> row = new ArrayList<>();
            for (int j = 0; j <= i; j++) {
                // 2、处理指定层数(i层)的数据
                if (j == 0 || j == i) {
                    // 2.1、每层的首、尾 2 个位置,直接设置为 1
                    row.add(1);
                    continue;
                }
                // 2.2、每层除了首、尾,本层j位置的值 = 上层j-1位置的值 + 上层j位置的值
                List<Integer> upperLevels = res.get(i - 1);
                row.add(upperLevels.get(j - 1) + upperLevels.get(j));
            }
            // 3、将本层结果存入杨辉三角
            res.add(row);
        }
        return res;
    }

5、抽象与扩展

你可能感兴趣的:(#,算法解题报告-leetcode,热门,算法,数据结构,动态规划)