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

顺序表 —— OJ题

在上一篇文章中简单介绍了顺序表,这一篇文章讲解下一个比较经典的题:

杨辉三角

先看一下什么是杨辉三角

下面解释:

大概就是这个规律。而 ta 其实就是二维数组 即:

0  1
1  1 1
2  1 2 1
3  1 3 3 1
4  1 4 6 4 1

然后看一下这个题的要求:

意思是 numRows 一个非负数(整数),在根据 numRows 里的整数生成 【杨辉三角 】的“层数”

这是ta给的方法体:

这里的 List <List<Integer>>这个边讲边说

下面说一下 这道题如何解:
首先是步骤:

如果你仔细观察这个图就会发现 ta 的头值和尾值都是 1 而中间的都是运算来的

所以可以将这道题分为 头 中  尾 三部分处理 

头 尾处理比较简单难点是 中 的处理,这时候 再仔细观察 中间的值,是如何得出来的,你会发现:

0  101  1 10 12  1 2 10 1 23  1 3 3 10 1 2 3 4  1 4 6 4 10 1 2 3 4所有的中间值都是由 上一个数组以下标 0 + 1 | 1 + 2 | 2 + 3 
的规律得出下一个数组 1下标 2下标 3下标 的值  如4数组:1下标 = 1+3 、2下标 = 3 + 3 、3下标 = 3+1就可以这样写:
i = 数组
while(ture){
j = 0;
int val = i[j] + i[j+1];
j++;
}

但这时候问题又出现了,以杨辉三角的规律不是那个数组,都有 1 2 3 下标的,这时候就要找条件

的要求了  这时候再仔细看一下图:

0  101  1 10 12  1 2 10 1 23  1 3 3 10 1 2 3 4  1 4 6 4 10 1 2 3 4会发现数组2需要加1次
数组3需要加2次
数组4需要加3次
后面相加的次数依次+1
只有 numRows 等于3时中间值需要加1次,4时加2次.......

这个题最好用顺序表解决 下面看代码:

public List<List<Integer>> generate(int numRows) {List<Integer> list = new ArrayList<>();//List<List<Integer>> ta 的意思就是如果你存放数组(顺序表的底层是数组)的地址//会给这个地址放上 下标  ret是要返回的List<List<Integer>> ret = new ArrayList<>();//处理一层list.add(1);ret.add(list);//处理二层以上for(int i = 1; i<numRows; i++){//头List<Integer> cj = new ArrayList<>();cj.add(1);//中//这里的 get 拿的是数组的整个地址List<Integer> zo = ret.get(i-1);//只有numRows 为3及以上才会运算for(int j = 0; j<i-1; j++){int val = zo.get(j) + zo.get(j+1);cj.add(val);}//尾cj.add(1);ret.add(cj);}return ret;}
List <List<Integer>>:

最后提交一下:

下一篇文章是 单向 无头 不循环链表

http://www.xdnf.cn/news/17698.html

相关文章:

  • HarmonyOS Navigation路由跳转的完整示例
  • 用了Cursor AI之后,我的编程效率翻倍了?——一位程序员的真实体验分享
  • 区块链技术原理(9)-什么是以太币
  • 飞算JavaAI云原生实践:基于Docker与K8s的自动化部署架构解析
  • redis 内存使用率高居高不下,如何分析 key占用情况
  • Eclipse RCP产品动态模块设计
  • [AI React Web]`意图识别`引擎 | `上下文选择算法` | `url内容抓取` | 截图捕获
  • C++主流string的使用
  • 海康视觉平台VM创建项目
  • [Oracle数据库] ORACLE的用户维护和权限操作
  • 猫头虎AI分享:Excel MCP,让AI具备操作Excel表格|创建销售数据表、复制工作表、填充数据、写公式、绘制图表、调节颜色、添加透视表、保存为PDF
  • el-select如何获取到filterable过滤后的数据;el-select全选与filterable过滤组合使用;
  • Python 中使用多进程编程的“三两”问题
  • Gradle(三)创建一个 SpringBoot 项目
  • vue修改element的css属性
  • 8.13打卡 DAY 41 简单CNN
  • Android实现Glide/Coil样式图/视频加载框架,Kotlin
  • 前后端分离项目在云服务器的部署
  • vscode远程服务器出现一直卡在正在打开远程和连接超时解决办法
  • 通过限制网络访问来降低服务器被攻击风险的方法
  • Python uv的使用和配置
  • 《深入解析C++中的Map容器:键值对存储的终极指南》
  • Tigshop 跨境多语言多货币 JAVA / PHP 版本重磅更新v5.0.0发布
  • 友思特方案 | FPGA 加持,友思特图像采集卡高速预处理助力视觉系统运行提速增效
  • iscc2025区域赛wp
  • 下一代防火墙--NGAF
  • [Oracle数据库] Oracle的表维护
  • [系统架构]信息安全技术基础知识(三)
  • 101 201写完刷卡提示61是什么意思?
  • 数字货币的去中心化:重构价值交换的底层逻辑​