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

LeetCode 118 题解--杨辉三角

杨辉三角

题目链接:https://leetcode.cn/problems/pascals-triangle/description/

杨辉三角是一个不仅在数学中非常经典的例题,还是在编程中也是一个比较经典的问题,下面就来看看这道题吧!
在这里插入图片描述
我们可以看到的是杨辉三角就是一个典型的三角形,并且每行每列元素都有元素!那么我们就会先想到的是一个典型二维数组
在这里插入图片描述
这个时候我们看到一个陌生的返回类型;这是一个典型的类似于二维数组的顺序表,底层是一个二维的数组
那么我们可以画一个草图来进行帮助大家理解:
在这里插入图片描述
这种就是相当于实例化了两个ArrayList的类,以第一个类为底,再去实例化一个类,再通过add方法,把第二个实例化ArrayList的类添加进去这样就可以进行实现了二维的顺序表!

但是我们明白了它是一个二维数组,可是我们怎么实现了这种对称的等腰三角形呢?
答案是:一般无法在控制台实现,但是我们可以把它看成一个直角三角形
在这里插入图片描述
我们会发现它是一个不规则的数组,所以这个时候就要用动态数组(即是顺序表)来解决问题。
这个时候我们再来看杨辉三角的特点:
1. 首尾项都是1
2. 中间某项的元素是上一行同一列的元素与上一行同前一列的元素的和
只要按照这个思路去解决问题即可;

完整代码如下:

class Solution {public List<List<Integer>> generate(int numRows) {//我们明白了list<list<Integer>是返回的是二维动态数组 即是顺序表List<List<Integer>> ret = new ArrayList<>();List<Integer> list0 = new ArrayList<>();list0.add(1);//第一行只有一个元素ret.add(list0);for(int i = 1;i < numRows;i++){//从第2行开始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(val2 + val1);}curRow.add(1);ret.add(curRow);}return ret;}
}
http://www.xdnf.cn/news/9487.html

相关文章:

  • 软考 系统架构设计师系列知识点之杂项集萃(77)
  • 1435系列信号发生器
  • 2025年上半年软考系统架构设计师--案例分析试题与答案
  • python 生成复杂表格,自动分页等功能
  • 自动驾驶规划控制教程——不确定环境下的决策规划
  • 火柴INIBOX矿机实测850M算力即将改写Initverse挖矿规则
  • 模型可信度
  • 缩量资金迁徙下的短期博弈
  • phpstudy(1) -- 记录
  • Orpheus-TTS:AI文本转语音,免费好用的TTS系统
  • 第二十二章:数据治理之数据价值:数据价值知多少
  • 远程模块“破壁”指南:打破空间限制,让控制“无界”!
  • 解析pod
  • MySQL推出全新Hypergraph优化器,正式进军OLAP领域!
  • msql的乐观锁和幂等性问题解决方案
  • Quartus 开发可实现人工智能加速的 FPGA 系统
  • rockerMQ实战 事务消息、延迟消息
  • 【Ruoyi-Vue】动态修改ruoyi-vue路由标签名称
  • MYSQL丢失pid处理方式
  • ZAB 和 RAFT分别是什么?它们的区别是什么?
  • STM32之FreeRTOS移植(重点)
  • 一次消谐器更换操作流程及注意事项
  • 7系fpga带microblaze做固件及固化
  • leetcode501.二叉搜索树中的众数:迭代中序遍历的众数追踪与数组动态更新
  • 重磅发布 | 复旦533页《大规模语言模型:从理论到实践(第2版)》(免费下载)
  • spring Data JPA详细介绍。
  • 3.20 工程计价数字化与智能化
  • PyTorch 2.1新特性:TorchDynamo如何实现30%训练加速(原理+自定义编译器开发)
  • Spring Ai | 从零带你一起走进AI项目(中英)
  • PXC集群