【动态规划】LC 118.杨辉三角

文章目录

前言

本专栏文章为《LeetCode 热题 100》的刷题题解,相关内容如有侵权,立即删除。

一、题目

1、原题链接

118.杨辉三角

2、题目描述

二、个人思路整理

1、思路分析

  1. dp[i][j]代表杨辉三角第i行第j列的元素值(下标均从0开始)。
  2. 状态转移方程:
  • 每一行的首尾两端均为1,即dp[i][0]=1,dp[i][i]=1。
  • 对于行内的中间元素(0<j<i),其值等于上一行相邻两个元素之和,即dp[i][j]=dp[i-1][j-1]+dp[i-1][j]。

复杂度分析

  • 时间复杂度: O ( numRows 2 ) O(\text{numRows}^2) O(numRows2),一共需要计算 1 + 2 + ⋯ + numRows = numRows ( numRows + 1 ) 2 1 + 2 + \dots + \text{numRows} = \frac{\text{numRows}(\text{numRows} + 1)}{2} 1+2+⋯+numRows=2numRows(numRows+1) 个数字。
  • 空间复杂度: O ( 1 ) O(1) O(1)(返回值所需的存储空间除外)。

2、解题代码

cpp 复制代码
class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> dp(numRows); //开辟含numRows个空vector的dp数组
        for(int i = 0; i < numRows; i++) {
            dp[i].resize(i+1, 1); // 第i行有i+1个元素,先全部初始化为1
            for (int j = 1; j < i ; j++) {
                // 中间元素等于上一行相邻两数之和
                dp[i][j] = dp[i-1][j-1] + dp[i-1][j];
            }
        }
        return dp;
    }
};

三、知识风暴

vector赋值

  1. vector<int> dp(n, val);:有参构造函数,分配n个元素的内存空间,并将每个元素都初始化为val(如果省略第二个参数(如 vector<int> dp(n);),默认会用类型的默认值填充(对于 int 就是 0 0 0))。
  2. dp.resize(n, val):成员方法,用于调整一个已经存在的vector的大小(改变其size())。
  • 行为规则:
    • 当 n > 当前 size n > \text{当前 size} n>当前 size:数组扩容到 n n n,多出来的那些新元素会被赋值为 val(若省略 val 则为 0 0 0)。
    • 当 n < 当前 size n < \text{当前 size} n<当前 size:数组截断到前 n n n 个元素,超出部分被直接丢弃。
    • 当 n = = 当前 size n == \text{当前 size} n==当前 size:什么也不做,原有元素的值保持不变。
  1. vector<vector<int>> dp(n) 会创建 n n n 个 vector<int>,每个 vector<int> 调用其默认构造函数(当 vector<int> 被默认初始化时:默认构造函数 vector<int>() 产生的是一个 size == 0 的空动态数组)。
相关推荐
用户979984807185 小时前
200 行代码写一个能跑的 AI Agent:不依赖任何框架,只靠 tool-calling 原理
算法
threerocks5 小时前
【Muse实战】X 流量作战室搭建保姆级教程 - 拥有你自己的运营团队
算法
lvwangshu5 小时前
P12960 毒药 题解
动态规划·题解·贪心·技巧·性质题·思维好题
GreenTea5 小时前
深度拆解 ScienceBuddy:如何用“双层递归自进化”构建高可靠科研 Agent Harness
前端·后端·算法
花椒技术5 小时前
2.46 秒生成 5 秒视频:拆解 H3 Max 的模型、推理栈与硬件协同
算法·音视频开发·视频编码
vivo互联网技术6 小时前
ART:妆容迁移框架,重新定义高保真妆容迁移 | ECCV 2026
人工智能·算法·图像识别
用户0441440924496 小时前
卫星信号模拟器里的四个坐标转换公式
算法
橘和柠6 小时前
阿里 open-code-review (AI代码审查工具)实战:安装、四层规则链、自定义规则格式与实测避坑
算法·面试
得物技术6 小时前
别再只卷向量检索了,得物交易搜索如何用“生成式”实现召回范式跃迁?
人工智能·算法·llm
罗西的思考6 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 ---(4)--- Rollout实现细节
人工智能·算法