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

面试算法100:三角形中最小路径之和

题目

在一个由数字组成的三角形中,第1行有1个数字,第2行有2个数字,以此类推,第n行有n个数字。例如,下图是一个包含4行数字的三角形。如果每步只能前往下一行中相邻的数字,请计算从三角形顶部到底部的路径经过的数字之和的最小值。从三角形顶部到底部的路径数字之和的最小值为11,对应的路径经过的数字用阴影表示。
在这里插入图片描述
说明:从三角形顶部到底部的路径数字之和的最小值为11,对应的路径经过的数字用阴影表示

分析

可以移动三角形每行的位置使它们左端对齐
在这里插入图片描述
可以用f(i,j)表示从三角形的顶部出发到达行号和列号分别为i和j(i≥j)的位置时路径数字之和的最小值,同时用T[i][j]表示三角形行号和列号分别为i和j的数字。如果三角形中包含n行数字,那么f(n-1,j)的最小值就是整个问题的最优解。

public class Test {public static void main(String[] args) {List<Integer> list1 = Arrays.asList(2);List<Integer> list2 = Arrays.asList(3, 4);List<Integer> list3 = Arrays.asList(6, 5, 7);List<Integer> list4 = Arrays.asList(4, 1, 8, 3);List<List<Integer>> triangle = Arrays.asList(list1, list2, list3, list4);int result = minimumTotal(triangle);System.out.println(result);}public static int minimumTotal(List<List<Integer>> triangle) {int size = triangle.size();int[][] dp = new int[size][size];for (int i = 0; i < size; i++) {for (int j = 0; j <= i; j++) {dp[i][j] = triangle.get(i).get(j);if (i > 0 && j == 0) {// 最左边dp[i][j] += dp[i - 1][j];}else if (i > 0 && i == j) {// 最右边dp[i][j] += dp[i - 1][j - 1];}else if (i > 0) {dp[i][j] += Math.min(dp[i - 1][j], dp[i - 1][j - 1]);}}}int min = Integer.MAX_VALUE;for (int num : dp[size - 1]) {// 答案在最底层,选出一个最小的min = Math.min(min, num);}return min;}
}
http://www.lryc.cn/news/278970.html

相关文章:

  • androj studio安装及运行源码
  • 【Web】token机制
  • JVM 11 调优指南:如何进行JVM调优,JVM调优参数
  • 横版动作闯关游戏:幽灵之歌 GHOST SONG 中文版
  • 【C++】:C++中的STL序列式容器vector源码剖析
  • final
  • 【AI】ObjectCenteredSensing
  • 一阶低通滤波器
  • 【排序算法】插入排序与希尔排序,你不想知道为什么希尔比插入更快吗?
  • Unity中向量的点乘、叉乘区别和作用以及经典案例
  • (26)Linux 进程通信之共享内存(共享储存空间)
  • 体感游戏开发体感互动游戏
  • vulnhub靶场之DC-5
  • 为什么选择CRM系统时,在线演示很重要?
  • 专业实习day3、4(路由器做内网访问公网)
  • H264码流进行RTP包封装
  • 基于多智能体点对点转换的分布式模型预测控制
  • 性能分析与调优: Linux 实现 缺页剖析与火焰图
  • 代码随想录算法训练营第17天 | 110.平衡二叉树 + 257. 二叉树的所有路径 + 404.左叶子之和
  • ubuntu20.04网络问题以及解决方案
  • Java面试题(java高级面试题)
  • 【MIdjourney】关于图像中人物视角的关键词
  • 433. 最小基因变化(Queue使用ArrayList和LinkedList进行声明)
  • MYSQL双主节点–更换ip
  • 一文玩转Go语言中的面向对象编程~
  • kylin集群反向代理(健康检查)
  • 【docker】centos7安装harbor
  • 2024 年 1 月安全更新修补了 58 个漏洞(Android )
  • 数据库系统概念 第七版 中文答案 第3章 SQL介绍
  • 什么是数通技术?以太网交换机在数通技术中的精要