java之杨辉三角问题

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

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

如何实现呢?

思路:首先,我们可以将杨辉三角视作i行j列的二维数组。除了第一行和第二行之外,其他行的元素都是首尾元素为1且该行的其他元素都是上一行相邻元素之和。有了这个思路,下面的实现步骤就可以有效的进行了。

步骤:

1.创建一个二维列表ret,用来存储每一行的元素。

2.创建一个只有元素1的列表(作为第一行)并将其添加到数组ret中

3.生成后续行:

(1):从第二行开始,通过for循环求该行的每一个元素,直到最后一行:

       for (int i = 1; i < numRows; i++)

(2):通过创建整形列表curRow,创建当前行的列表,同时通过add函数添加该行的第一个元素1。

(3):创建一个整形列表preRow用来接收上一行的值。

4.创建当前行中间的值:

(1):从第二个元素for循环到当前倒数第二个元素。for (int j = 1; j < i; j++) (因为第一个元素和倒数第二个元素都是1.)

(2):设置两个整形int val1 和 int val2,获取上一行相邻的两个元素( int val1=preRow.get(j); 

         和 int val2 = preRow.get(j-1);) 

(3):将两个值相加后添加到当前行:curRow.add(val1 + val2);

5.添加当前行的最后一个元素1:curRow.add(1)

6.将当前行添加到二维列表ret中。(ret.add(curRow);)

7.返回结果:return ret ,返回生成的杨辉三角。

具体实现代码如下:

class Solution {public List<List<Integer>> generate(int numRows) {List <List<Integer>> ret = new ArrayList<>(); //创建一个二维列表List<Integer> list0 = new ArrayList<>(); // 创建杨辉三角的第一行list0.add(1); //添加杨辉三角的第一个元素ret.add(list0); //将list0添加到ret中//从第二行开始求每个元素for(int i=1;i<numRows;i++){//处理第一个元素List<Integer> curRow = new ArrayList<>();curRow.add(1);//中间List<Integer> preRow = ret.get(i-1); //获取上一行的数组for(int j = 1;j<i;j++){int val1 = preRow.get(j);int val2 = preRow.get(j-1);curRow.add(val1+val2);}//尾巴处添加curRow.add(1);ret.add(curRow);}return ret;}
}

今天的分享就到这,喜欢的老铁来个三连吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145985.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

IPD流程体系:IPD在硬件产品开发中的应用

目录 1、内容简介 2、开发各阶段介绍 3、PVT阶段 4、资源群更新 作者简介 1、内容简介 在硬件类相关产品的开发过程中&#xff0c; 每个阶段的工作都是需要按照一定的流程、规范和标准去进行的。 整体还是相对瀑布化的流程&#xff0c; 每个阶段的输入、输出、准入、准…

C++初阶学习——探索STL奥秘——反向迭代器

适配器模式是 STL 中的重要组成部分&#xff0c;除了容器适配器外&#xff0c;还有 选代器适配器&#xff0c;借助 选代器适配器 &#xff0c;可以轻松将各种容器中的普通迭代器转变为反向迭代器&#xff0c;这正是适配器的核心思想 注:库中的反向迭代器在设计时&#xff0c;为…

【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))

Host 表示服务器主机的地址和端口号 URL 里面不是已经有 Host 了吗&#xff0c;为什么还要写一次&#xff1f; 这里的 Host 和 URL 中的 IP 地址、端口什么的&#xff0c;绝大部分情况下是一样的&#xff0c;少数情况下可能不同当前我们经过某个代理进行转发。过程中&#xf…

С++第十三节课 string初体验

一、string类的相关函数 string实际上也就是一个管理字符的顺序表&#xff01; 如果我们需要遍历一个字符串&#xff0c;怎么实现&#xff1f; 我们可以通过下标访问操作符 size实现字符串的遍历&#xff01; int main() {string s1("hello world");// 遍历一个字…

不可思议的效率飞跃:RPA如何重塑你的工作流程,释放人力潜能!

RPA简介 机器人流程自动化&#xff08;Robotic Process Automation&#xff0c;简称RPA&#xff09;是一种模拟人类用户操作的软件技术&#xff0c;它通过自动化执行重复性、规律性强的任务来提高工作效率和准确性。RPA软件机器人可以模拟鼠标点击、键盘输入、数据复制粘贴等操…

anaconda的windows新手安装及配置教程(适用于物联网工程、计算机专业)

第一步:点击免费下载 点击我直达anaconda官网">——>点击我直达anaconda官网 第二步:跳过注册 第三步:下载windows版本 第四步:安装步骤 1.Next (下一步) 2.I Agree (我同意) 3.默认即可,下一步 4.安装地址可以选到D盘,如果没有默认也行,只是一个…

OpenAI GPT o1技术报告阅读(4)- 填字游戏推理

✨继续阅读报告&#xff1a;使用大模型来学习推理(Reason) 原文链接&#xff1a;https://openai.com/index/learning-to-reason-with-llms/ 这次我们继续看一个填字游戏的案例。 我们先看下问题&#xff1a; 解决以下填字游戏&#xff1a; Across&#xff08;横向&#xff09…

推荐2024年好用的4款日语翻译工具

日语在学习研究&#xff0c;商务合作&#xff0c;旅游文化交流等多个领域还是占有着一个比较重要的作用&#xff0c;将中日两种语言进行准确地翻译能够这些活动更加高效有益地进行和发展。因此好的翻译工具便尤为重要&#xff0c;今天我也给大家挑选了几款优秀地日语翻译工具。…

可视化工具箱-Visualization Toolkit(VTK)

一、Visualization Toolkit&#xff08;VTK&#xff09;简概 可视化工具箱&#xff08;VTK&#xff09;&#xff0c;是一个用于3D计算机图形、图像处理和科学可视化的开源软件系统&#xff0c;其包含C类库和Tcl/Tk、Java与python的解释型接口层。VTK支持各种可视化算法&#xf…

电机设计及电机仿真APP系列之—轴向磁通电机仿真APP

电机的各种工作状态和参数变化。用户可通过调整仿真参数&#xff0c;快速得到电机的响应和性能参数&#xff0c;从而进行针对性的优化和改进。借助仿真APP&#xff0c;可大大减少电机设计迭代次数和成本&#xff0c;提高测试效率和准确性。 小编整理了10款不同类型的电机仿真A…

前端vue-v-for循环遍历

&#xff08;item,index&#xff09;in list中&#xff0c;index这个索引可加可不加&#xff0c;item代表list中的每一个元素&#xff0c;list可以是数组&#xff0c;也可以是对象&#xff0c;要遍历谁就把 &#xff08;item,index&#xff09;in list加在哪里。 关于加不加&a…

BUUCTF-MISC-隐藏的钥匙

下载题目文件&#xff0c;获得了一张格式为jpg的路飞图片 按照习惯&#xff0c;首先使用十六进制编译器打开文件&#xff0c;这里我使用winhex打开文件 首先考虑有没有flag直接隐写在文件中&#xff0c;按照图示步骤查找flag字段 我们查到了flag&#xff0c;通过经验和图中base…

MySQL的缓存策略

目录 一、MySQL 缓存方案用来干什么 二、提升MySQL访问性能的方式 1、读写分离&#xff08;MySQL的主从复制&#xff09; 2、连接池 3、异步连接 三、缓存方案是怎么解决的 1、缓存与MySQL一致性状态分析 2、制定热点数据的读写策略 四、缓存方案问题的解决方法 1、缓…

正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)

文章目录 一、蜂鸣器&#xff08;待&#xff0c;理解&#xff09;1.1 第一行1.2 第二行1.3 第三行 二、串口原理2.1 通信格式2.2 UART寄存器 一、蜂鸣器&#xff08;待&#xff0c;理解&#xff09; 1.1 第一行 对于第一行&#xff0c;首先先到fsl_iomuxc文件里面寻找IOMUXC_S…

人力资源数据集分析(一)_t-test、卡方检验和描述性统计

数据入口&#xff1a;人力资源分析数据集 - Heywhale.com 数据说明 字段说明EmpID唯一的员工IDAge年龄AgeGroup年龄组Attrition是否离职BusinessTravel出差&#xff1a;很少、频繁、不出差DailyRate日薪Department任职部门&#xff1a;研发部门、销售部门、人力资源部门Dista…

【VUE3.0】如何得到一张像素风格的图片?

目录 引言网络途径获取代码转换已有的图片0. 先看效果1. 上传图片&#xff0c;这个没什么好说的&#xff0c;前端上传图片基本操作。2. 通过滑动条提供一个1-10的数字&#xff0c;用于放缩图片画质。3. 函数拿到图片资源后先对图片进行缩小100倍尺寸处理&#xff0c;此时画质已…

服务器非法关闭后MySQL服务启动失败

在写这篇文章前&#xff0c;我弄好了&#xff0c;写完之后把成功安装的几个MySQL都删除了&#xff0c;只留了最后测试成功的服务“mysql-test” ,然后点击运行&#xff0c;发现又出现上图的错误。心态炸了。 本以为定位到问题了&#xff0c;但是这个错误让我迷茫了。我只能临时…

为什么你的广告规模无法扩大

许多跑facebook的广告主可能都遇到过这样的情况&#xff0c;小额测试广告的时候效果不错&#xff0c;一旦加预算想扩大规模广告往往就会崩掉&#xff0c;始终无法把广告提升一个level,如果你尝试了很多投放策略调整都无法挽救的话&#xff0c;可能问题是出在广告素材上。 对于一…

多重指针变量(n重指针变量)实例分析

0 前言 指针之于C语言&#xff0c;就像子弹于枪械。没了子弹的枪械虽然可以用来肉搏&#xff0c;却失去了迅速解决、优雅解决战斗的能力。但上了膛的枪械也非常危险&#xff0c;时刻要注意是否上了保险&#xff0c;使用C语言的指针也是如此&#xff0c;要万分小心&#xff0c;…

杀死端口占用的进程

1、查看端口的进程&#xff0c;以9023为例 &#xff08;1&#xff09;方法1 netstat -tunpl|grep 9023 &#xff08;2&#xff09;方法2 ss -tulpan |grep 9023 &#xff08;3&#xff09;方法3 netstat -ntlp |grep 9023 &#xff08;4&#xff09;方法4 lsof -i:9023 …