当前位置: 首页 > article >正文

【C++刷题】力扣-#119-杨辉三角II

题目描述

给定一个非负整数 rowIndex,返回杨辉三角的第 rowIndex 行。杨辉三角中的每一行的数字是它正上方两个数字的和。

示例

示例 1:

输入: rowIndex = 3
输出: [1,3,3,1]

示例 2:

输入: rowIndex = 0
输出: [1]

示例 3:

输入: rowIndex = 1
输出: [1,1]

题解

这个问题可以通过动态规划来解决。我们可以使用一个一维数组来存储当前行的值,然后根据上一行计算当前行的值。

  1. 初始化:如果 rowIndex 为 0,返回只有一个元素 [1] 的列表。
  2. 构建杨辉三角的当前行:创建一个列表 row,长度为 rowIndex + 1,初始值都为 1。
  3. 计算中间值:对于 row 中的每个位置 j(从 1 到 rowIndex - 1),计算 row[j] 的值为上一行的 row[j - 1] 和 row[j] 的和。
  4. 返回结果:返回 row。

代码实现

vector<int> getRow(int rowIndex) {
    vector<int> row(rowIndex + 1, 1);
    for (int i = 1; i < rowIndex; i++) {
        for (int j = i; j > 0; j--) {
            row[j] += row[j - 1];
        }
    }
    return row;
}

复杂度分析

● 时间复杂度:O(rowIndex^2),因为我们需要计算每一行的每个数字,每个数字的计算时间是 O(1)。
● 空间复杂度:O(rowIndex),因为我们需要存储当前行的值。
这个算法的优势在于它直接模拟了杨辉三角的构建过程,不需要额外的数学计算。


http://www.kler.cn/news/359678.html

相关文章:

  • MySQL备份和还原,用mysqldump、mysql和source命令来完成
  • React中的Hooks钩子
  • Node + HTML搭建自己的ChatGPT [基础版]
  • 农合生活平台用户量已突破5万人大关。
  • vue中this.$nextTick()方法
  • Prometheus 抓取 nginx 访问日志的指标
  • @MassageMapping和@SendTo注解详解
  • Shell并发执行:提升脚本效率的终极指南
  • 深入理解 Kafka
  • 【Python网络编程】学习Socket编程,打造网络应用!
  • 设计模式(c++)
  • 【数学二】多元函数微积分学-多元函数的微分
  • 代码训练营 day38|LeetCode 62,LeetCode 63
  • 每月洞察:App Store 和 Google Play 的主要更新
  • 【MATLAB 串口调试+虚拟串口测试】
  • 优化UVM环境(七)-整理环境,把scoreboard拿出来放在project_common环境里
  • 代码随想录算法训练营第十一天|383. 赎金信, 15. 三数之和
  • Verilator——最简单、最细节上手教程
  • 后端接收参数的几种常用注解
  • 中国移动机器人将投入养老场景;华为与APUS共筑AI医疗多场景应用