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

LeetCode刷题--杨辉三角

文章目录

  • 题目描述
  • 分析
  • 代码

题目描述

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

在这里插入图片描述
示例 1:

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

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

分析

我们解答这个题要用vector容器,但是内部模是vector也就是
在这里插入图片描述

原理就像是二维数组一样
在这里插入图片描述
如同我们用vv[i][j]来访问具体每一个三角形第i行第i个。相当于 vv.operator[i].operator[j].
第一个 vv.operator[]是vector < int > * 类型第二个才是int* 型的。

代码

在这里插入图片描述

首先我们先构造numRows个vv类型是vector< int >
vector<vector> vv(numRows);
在这里插入图片描述

把每一行的vector< int>里的每行递增都设为1。
for (int i = 0; i < numRows; i++) {

      vv[i].resize(i + 1, 1);

  }

最后设置每个位置为 vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];

  for (int i = 0; i < vv.size(); i++) {


      for (int j = 1; j < vv[i].size()-1; j++) {
          vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];
      }
  }

      vector<vector<int>> vv(numRows);

      for (int i = 0; i < numRows; i++) {

          vv[i].resize(i + 1, 1);

      }
      for (int i = 0; i < vv.size(); i++) {


          for (int j = 1; j < vv[i].size()-1; j++) {
              vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];
          }
      }
   return vv;

在这里插入图片描述


http://www.kler.cn/a/577147.html

相关文章:

  • 【C++设计模式】第十篇:外观模式(Facade)
  • swift -(5) 汇编分析结构体、类的内存布局
  • 《量子Java:从超导芯片到光子计算的编程革命》——解析Google量子AI中心的混合架构,揭秘如何用Java控制量子比特!
  • C++ 初始化列表:成员变量的 “快速入场券”
  • 内核编程七:Linux 内核日志的级别
  • 大白话CSS 优先级计算规则的详细推导与示例
  • DBeaver 25.0 社区版安装与数据库连接配置指南(Windows平台)
  • C++11语法糖:auto和范围for循环详解
  • lvgl在ubuntu中模拟运行
  • win11 Visual Studio 17 2022源码编译 opencv4.11.0 + cuda12.6.3 启用GPU加速
  • 新能源汽车充电综合解决方案:安科瑞电气助力绿色出行
  • 青少年编程与数学 02-010 C++程序设计基础 29课题、继承
  • 常用AI工具推荐
  • Python包结构与 `__init__.py` 详解
  • 如何用postman设置接口测试关联
  • CentOS 最新系统安装 Redis 7.0.11 详细指南
  • PyTorch深度学习框架60天进阶学习计划第16天:循环神经网络进阶!
  • Web3的技术挑战:去中心化的可扩展性与性能问题
  • 【保姆级 HAL 库学习定时器】
  • C语言-语法