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

【每日刷题】杨辉三角

118. 杨辉三角 - 力扣(LeetCode)

话先放在前面,无论数学好不好,都能写,不用自己推导。

记录一下我自己的AC代码。首先初始化第一行,放入res。之后继续生成每一行,首尾都是1,其余每个数字等于上一行的左右两个数字之和,然后把新的一行放入res,用cur记录新的一行。

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res = new ArrayList<>();int pos = 1;List<Integer> cur = new ArrayList<>();cur.add(1);res.add(cur);while(pos < numRows) {List nxt = new ArrayList<>();nxt.add(1);for(int i = 0; i < cur.size() - 1; i++) {int num = cur.get(i) + cur.get(i+1);nxt.add(num);}nxt.add(1);res.add(nxt);cur = nxt;pos++;}return res;}
}

下面是根据官方题解修改的版本,更简洁一些。差别如下:

  • 把while循环改成了for循环,因为反正每次都要自增。
  • 不用cur来额外记录上一行,直接用 res.get(i-1) 取得上一行即可。
  • 首尾设置为1用 if(j == 0 || j == i) 判断,更结构化一些。
class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res = new ArrayList<>();for(int i = 0; i < numRows; i++) {List cur = new ArrayList<>();for(int j = 0; j <= i; j++) {if(j == 0 || j == i) {cur.add(1);} else {int num = res.get(i - 1).get(j - 1) + res.get(i - 1).get(j);cur.add(num);}}res.add(cur);}return res;}
}
http://www.dtcms.com/a/279848.html

相关文章:

  • Git根据标签Tag强制回滚版本
  • 面试常问:如何在一个长度为n的无序数据快速获取前k个数值
  • 网络传输过程
  • GaussDB between的用法
  • 光伏板如何最大化铺设?
  • 【PostgreSQL异常解决】`PostgreSQL`异常之类型转换错误
  • 记录自己在将python文件变成可访问库文件是碰到的问题
  • vert.x 官网docs, vert.x中文文档地址 vertx文档
  • 文心4.5开源之路:引领技术开放新时代!
  • 【前端:Typst】--let关键字的用法
  • 高德开放平台携手阿里云,面向开发者推出地图服务产品MCP Server
  • 外部协作不力影响项目进度,如何加强外部沟通
  • 项目进度压缩影响质量,如何平衡进度与质量
  • LeetCode|Day11|557. 反转字符串中的单词 III|Python刷题笔记
  • 稀土化合物:助力高效种植与健康养殖
  • vue笔记3 VueRouter VueX详细讲解
  • 对象的使用
  • CAN终端电阻为什么是60R+60R,而不直接用120R?
  • 前端vue对接海康摄像头流程
  • Flink窗口处理函数
  • C++-linux 5.gdb调试工具
  • 【从语言幻觉看趋势】从语言幻觉到多智能体协作:GPT多角色系统的技术演进与实践路径
  • 判断端口处于监听状态的方法
  • 腾讯云WAF域名分级防护实战笔记
  • EPLAN 电气制图(八):宏应用与变频器控制回路绘制全攻略
  • ssm学习笔记day07mybatis
  • 如何在 Shopify 中创建退货标签
  • 【C语言】浮点数在内存中的存储:从科学计数法到内存存储
  • 从输入URL到页面呈现都发生了什么?
  • MFC UI大小改变与自适应