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

《leetcode-php》求三角形的最小加权路径和

给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字,
例如,给出的三角形如下:
[↵ [2],↵ [3,4],↵ [6,5,7],↵ [4,1,8,3]↵]
最小的从顶部到底部的路径和是2 + 3 + 5 + 1 = 11。注意:
如果你能只用O(N)的额外的空间来完成这项工作的话,就可以得到附加分,其中N是三角形中的行总数。
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.
For example, given the following triangle
[↵ [2],↵ [3,4],↵ [6,5,7],↵ [4,1,8,3]↵]↵
The minimum path sum from top to bottom is11(i.e., 2 + 3 + 5 + 1 = 11).
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.

<?php /** * @param $arrTriangle * 每个节点的最小$arrMin */ function minimumTotal($arrTriangle) { $num = count($arrTriangle); $arrMin = array(); //先从最下面一层开始 for ($i = $num - 1; $i >= 0 ;$i --) { //求所有层的最小路径值 foreach ($arrTriangle[$i] as $key => $value) { if ($i == $num - 1) { $arrMin[$i][$key] = $value; continue; } $arrMin[$i][$key] = $value + min($arrMin[$i + 1][$key],$arrMin[$i + 1][$key + 1]); } } return $arrMin[0][0]; } $arr=[ [2], [3,4], [6,5,7], [4,1,8,3], ]; $ret = minimumTotal($arr); print $ret;

需要减少额外空间的使用,可以使用传进来的数组。

<?php /** * @param $arrTriangle * 每个节点的最小用入参数组存储 */ function minimumTotal($arrTriangle) { $num = count($arrTriangle); //先从最下面第二层开始,第一层的最小就是自身 for ($i = $num - 2; $i >= 0 ;$i --) { //求所有层的最小路径值 foreach ($arrTriangle[$i] as $key => $value) { $arrTriangle[$i][$key] = $value + min($arrTriangle[$i + 1][$key],$arrTriangle[$i + 1][$key + 1]); } } return $arrTriangle[0][0]; } $arr=[ [2], [3,4], [6,5,7], [4,1,8,3], ]; $ret = minimumTotal($arr); print $ret;
http://www.jsqmd.com/news/1281498/

相关文章:

  • 扎根昆仑绿洲打造高端米——羊脂白露米品牌发展纪实 - 品牌推荐君
  • 终极SVG编辑神器:SVGEdit免费高效导出PDF、PNG和高质量SVG的完整指南
  • Android免Root防撤回终极指南:永久告别消息撤回烦恼
  • 从图形化编程到Python海龟绘图:四色旋转方块阵实战解析
  • AI智能体正在集体“上岗“:当Agent学会替你干活,人机交互的最后一层界面为什么还是“哑“的?
  • VisualCppRedist AIO:Windows运行库管理的终极解决方案
  • 2026年牦牛骨高汤冰煮锁鲜与鲜菌慢熬解析 - 万相科技
  • 05.01.01.泛微OA Ecology10(获取WebService接口数据(ERP TipTop GP5.3)action方式)
  • OpenClaw智能代理框架:金融分析、自动化与本地部署实战
  • 焊接符号知识问答
  • Windows风扇控制终极指南:3步打造完美静音散热系统
  • 力扣:逆波兰表达式
  • AI如何优化学术写作:文献梳理与术语校验实战
  • Java雷坑整理(2)
  • 告别手忙脚乱!这款FF14智能钓鱼辅助工具让你轻松成为钓鱼大师
  • 基于行空板扩展板的智能家居中控系统:从硬件设计到软件实现
  • 【Bug已解决】vllm process crashed because of dp coordinator receives unexpected message... 解决方案
  • BKA-CNN-LSTM多变量回归预测模型解析与Matlab实现
  • bq2415x评估模块实战:从开关电源原理到锂电充电设计避坑指南
  • 高级游戏自动化引擎架构设计:基于MaaFramework的《重返未来:1999》自动化助手深度解析
  • 宁波包包回收有无隐形收费,上门鉴定估价不收取额外费用 - 好物测评局
  • JAVA计算机毕设之基于 SpringBoot+Vue 的高校学生线上互助答疑与学习资料共享平台 数字化校园学习互助社区与教学资源管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • ChatBI上线前必答的合规清单:权限、审计与敏感数据边界
  • Hibernate关联关系(一对多)
  • LabVIEW 做交流氩弧焊弧压跟踪,3 种方案实测对比
  • 凭据管理10条安全红线:这些错千万别犯
  • 高效能人士的10个偷懒技巧:系统化思维与时间管理
  • 开源项目维护避坑指南:Issue 管理、Breaking Change 与社区关系的平衡
  • 七层路由的艺术:Envoy 的 HTTP 路由、重试与限流策略
  • JAVA计算机毕设之基于SpringBoot+Vue的校园共享单车信息化运维管理系统 校园共享单车故障上报与车辆调度管理系统(完整前后端代码+说明文档+LW,调试定制等)