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

从递归到数学规律:我是怎么把杨辉三角写对的

题目速览LeetCode 118. 杨辉三角简单给定一个非负整数numRows生成杨辉三角的前numRows行。规则很简单每个数是它左上方和右上方的数的和。每行第一个和最后一个都是 1。示例输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 我的第一反应差点翻车看到这种二维结构我第一反应是这不就是个二维 List 嘛直接套两层循环。于是我写出了大概这样的逻辑外层循环控制行数。内层循环给每一行塞数。如果是第一个或最后一个塞 1。否则去上一行拿数相加。结果一跑直接给我报了个IndexOutOfBoundsException。我当时一脸懵“我不是已经判断了j 0 || j i了吗怎么还会越界” 排查过程关键坑点后来我盯着代码看了十分钟终于发现问题出在这我把result.add(row)写在内层循环里了。也就是说每算一个数我就把整行加了一遍。算第 0 个加一次 row算第 1 个又加一次 row这就导致result里的行数乱了等到下一行去result.get(i-1)拿上一行数据时拿到的根本不是我想的那个。还有一个隐藏问题当i 0的时候如果不特殊处理第一行会是空的这也直接导致后面全崩。 正确的姿势理清索引关系冷静下来重新理逻辑其实杨辉三角的规律非常死板不需要瞎猜第 i 行有 i 1 个数i 从 0 开始。首尾一定是 1。中间的数 上一行[j-1] 上一行[j]。只要保证一行算完了再丢进结果集里就不会乱。✅ 最终代码可直接交class Solution { public ListListInteger generate(int numRows) { ListListInteger result new ArrayList(); for (int i 0; i numRows; i) { ListInteger row new ArrayList(); for (int j 0; j i; j) { if (j 0 || j i) { row.add(1); } else { int left result.get(i - 1).get(j - 1); int right result.get(i - 1).get(j); row.add(left right); } } // ✅ 关键一行结束了再 add result.add(row); } return result; } } 执行过程拆解n 5行号 i计算过程当前行0只有一个 1[1]11 1[1, 1]21, (11), 1[1, 2, 1]31, (12), (21), 1[1, 3, 3, 1]41, (13), (33), (31), 1[1, 4, 6, 4, 1] 我踩过的坑避坑指南别急着往结果里加❌ 内层循环里add(row)✅ 外层循环结束再add(row)边界一定要死记第一行必须是[1]每一行第一个和最后一个一定是1索引别写反result.get(i - 1)才是上一行j - 1和j别搞混 一句话总结杨辉三角看似是数学题其实是数组索引控制题。只要你记住一行算完再存首尾填 1中间去上一行拿数这题就稳了。 面试怎么说建议背“这题我用模拟的方式来做。用一个二维 List 存储结果外层循环控制行数。每一行第一个和最后一个元素固定为 1中间的元素通过上一行的两个相邻元素相加得到。注意要把整行构造完成后再加入结果集避免索引错乱。”写完这篇我才发现很多题不是难而是我们太着急下手写了。先画图再写代码真的能救命。
http://www.gsyq.cn/news/1336080.html

相关文章:

  • MySQL新手必看:Navicat导入SQL文件报错1046?三步搞定数据库选择问题
  • 微生物网络分析终极指南:NetCoMi如何帮你3步构建复杂关联网络
  • 收藏备用!【2025 版】CMD 命令超详细大全,零基础全覆盖
  • 3分钟实现CAD建模革命:Zoo Text-to-CAD如何让文字描述秒变3D模型?
  • YimMenu:基于现代C++的GTA V模块化反作弊与安全架构深度解析
  • Adobe-GenP 3.0:5分钟快速激活Adobe全系列软件的专业指南
  • 轻量级人脸检测方案:解决移动端AI视觉部署的核心痛点
  • LDDC终极指南:如何快速获取精准歌词,让你的音乐体验完美同步![特殊字符]
  • 3分钟搞定多版本PHP环境管理:phpenv终极指南 [特殊字符]
  • python海龟绘图之绘图窗口操作
  • YimMenu:GTA5终极安全防护与游戏体验优化完整指南
  • 基于SSM的在线预约导游系统(10068)
  • CANN/asc-devkit OpHostCPUDef引擎配置
  • 嵌入式Linux实战:手把手教你为EC20 4G模块编译GobiNet驱动(含内核配置与常见编译错误解决)
  • 3分钟上手Transmission:零门槛掌握免费BT下载神器
  • Squash实战案例:快速定位和修复微服务计算错误
  • 揭秘多语言电子书语音合成:ebook2audiobook技术深度解析
  • 6月PMP报考人数暴涨30%,背后发生了什么?
  • 字节面试官:你知道Claude Code的多Agent实现机制吗?
  • LibreSprite完全指南:免费开源的像素艺术与动画制作神器
  • GGCNN实战指南:基于深度学习的实时机器人抓取生成网络深度解析
  • 统信系统小程序(四)linux环境下的python程序打包Nuitka工具
  • Python图像处理避坑指南:TIF转PNG时,用GDAL还是PIL/OpenCV?看完这篇再决定
  • PyTorch实战(35)——使用PyTorch Profiler分析模型推理性能
  • 使用Python快速上手Taotoken实现你的第一个大模型对话
  • 10分钟精通:如何在VSCode中实现专业级图表实时预览?
  • 离子交换柱生产厂家哪家靠谱?水喷式真空泵厂家推荐:丰亿环保领衔,2026年国内优质水喷式真空泵与离子交换柱生产厂家盘点 - 栗子测评
  • applera1n:免费绕过iOS 15-16激活锁的终极指南
  • 混合搅拌机厂家哪家好?干法制粒机生产厂家哪家好?2026年国内靠谱厂家实力盘点与推荐:科洛伊机械领衔 - 栗子测评
  • 2026年238个好发CCF-A的强化学习idea全面汇总!