LeetCode热题100--118. 杨辉三角--简单

题目

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

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

示例 1:

输入: numRows = 5

输出: \[1,1,1,1,2,1,1,3,3,1,1,4,6,4,1]

示例 2:

输入: numRows = 1

输出: \[1]

题解

java 复制代码
class Solution {
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> c = new ArrayList<>(numRows); // 预分配空间
        c.add(List.of(1));
        for (int i = 1; i < numRows; i++) {
            List<Integer> row = new ArrayList<>(i + 1); // 预分配空间
            row.add(1);
            for (int j = 1; j < i; j++) {
                // 左上方的数 + 正上方的数
                row.add(c.get(i - 1).get(j - 1) + c.get(i - 1).get(j));
            }
            row.add(1);
            c.add(row);
        }
        return c;
    }
}

解析

出自:简单题,简单做(Python/Java/C++/C/Go/JS/Rust)

java 复制代码
class Solution  {    //定义一个新的解决方案类
   public List<List<Integer>> generate(int numRows) {      //此函数接受一个字符串s作为输入参数,用于匹配回文。返回值为布尔类型(True if s is a palindrome, False otherwise)
       List<List<Integer>> c = new ArrayList<>(numRows);   //在这里创建一个空的二维列表(可变长度数组)来存储所有三角形行。这个列表最多有'numRows'个子元素,每个子元素都表示一个帕斯卡三角形行
       c.add(List.of(1));                                 //将第一个值[1]添加到我们的二维列表中
       for (int i = 1; i < numRows; i++) {                   //从第二个数字开始(因为帕斯卡三角形的每个行都有一个'1'作为前缀和后缀,所以我们从1开始循环)。在这里'i'表示每一行的索引号
           List<Integer> row = new ArrayList<>(i + 1);       //创建一个新的ArrayList来存储每一行的数字。它的容量将等于行数+1(因为每个帕斯卡三角形行都有一个额外的'1'作为后缀)
           row.add(1);                                         //由于每个帕斯卡三角形行的起始有一个'1',所以将第一个值[1]添加到我们的新创建的ArrayList中
           for (int j = 1; j < i; j++) {                      //这个循环用于获取每一行中的第j个计算出的元素。在这里'j'从我们的第二个值开始,一直到索引为i(不包括最大数)
                row.add(c.get(i - 1).get(j - 1) + c.get(i - 1).get(j)); //计算第i-th行中第j个数字。它是帕斯卡三角形中的左上方和正上方的元素之和
           }   
           row.add(1);                                         //由于每个帕斯科三角形行的结尾有一个'1',所以将最后一个值[1]添加到我们的新创建的ArrayList中
           c.add(row);                                          //将每一行添加到我们的二维列表c中 
        }
相关推荐
Mem0rin6 分钟前
二分查找:左右边界
数据结构·算法
大明者省10 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
白狐_79811 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander25812 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
Shell运维手记12 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
杨航 AI12 小时前
O(n log n):线性对数原理拆解 这个是排序算法的黄金复杂度之一。
算法·排序算法
船厂电气自动化ai大模型13 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光13 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
叠层归一研究院14 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
zlinear数据采集卡15 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构