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

使用vector构造杨辉三角形

力扣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]]
提示:1 <= numRows <= 30

#include<iostream>
#include<vector>
using namespace std;

class Solution
{
public:
	void generate(int numRows)
	{
		vector<vector<int>> vv;     //类似于二维数组
		vv.resize(numRows);
    /*开辟numRows个空间,也就相当于开辟了numRows行。这里注意不要用reserve函数,因为该函数没办法初始化*/
		for (int i = 0; i < numRows; i++)
		{
			vv[i].resize(i + 1, 0);   /*下三角矩阵,第一行对应一列,第二行对应两列......并且都初始化为0*/
			vv[i][0] = vv[i][vv[i].size() - 1] = 1;   /*将每行的第一个与最后一个都赋值为1*/
		}
		for (int i = 0; i < vv.size(); i++)
		{
			for (int j = 0; j < vv[i].size(); j++)
			{
				if (vv[i][j] == 0)   /*这里只有三角形内部为0*/
				{
					vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];
				}
			}
		}
		for (auto& e : vv)            //用范围for打印出杨辉三角形
		{
			for (int& num : e)
			{
				cout << num << ' ';
			}
			cout << endl;
		}
			
	}
};

int main()
{
	int numRows;
	cin >> numRows;
	Solution s1;            //创建对象
	s1.generate(numRows);   //调用函数
}

验证一下:

 在力扣也验证一下:

相关文章:

  • 深入理解JavaScript中的同步和异步编程模型及应用场景
  • 【#2】介绍第三方库
  • 全面系统梳理多模态LLM对齐算法
  • Shiro学习(一):Shiro介绍和基本使用
  • vue2拦截器 拦截后端返回的数据,并判断是否需要登录
  • 程序化广告行业(32/89):常见广告位类型深度剖析
  • 【大模型基础_毛玉仁】4.2 参数附加方法
  • spring 核心注解整理
  • Windows 和 Linux 操作系统架构对比以及交叉编译
  • 网络华为HCIA+HCIP 交换机
  • ⭐算法OJ⭐连接所有点的最小费用【最小生成树】(C++实现)Min Cost to Connect All Points
  • 申报视频材料要求!第三批南充西充县非物质文化遗产代表性项目(增补)条件时间和申请程序
  • 原生后台GPS位置限制,降低功耗
  • HarmonyOS NEXT图形渲染体系:重新定义移动端视觉体验
  • 中学数学几百年重大错误:将无穷多各异假R误为R——两数集相等的必要条件
  • ABC391题解
  • 笔试专题(三)
  • 26考研——图_图的代码实操(6)
  • uv包简单使用案例
  • 在 Mac 上使用 Poetry 配置环境变量
  • 宁波电商平台网站建设/定制营销型网站建设
  • 老王传奇新开网站/百度关键词推广条件
  • 网站建设服务商排名/网络营销的现状分析
  • 石家庄哪里有做外贸网站的公司/企业网站seo优化
  • 国内做网站建设知名的公司/网络营销活动策划
  • h5如何做多页面网站/百度搜索引擎营销