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

LeetCode刷题记录:(15)三角形最小路径和

知识点:倒叙的动态规划
题目传送

在这里插入图片描述

解法一:二维动态规划【容易理解】
在这里插入图片描述

class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n = triangle.size();if (n == 1) {return triangle.get(0).get(0);}// dp[i][j]:走到第i层第j个的最小路径和int[][] dp = new int[n + 1][n + 1];// 初始化左右两侧的值for (int i = 1; i <= n; i++) {dp[i][1] = dp[i - 1][1] + triangle.get(i - 1).get(0);dp[i][i] = dp[i - 1][i - 1] + triangle.get(i - 1).get(i - 1);}// 递推中间的值for (int i = 3; i <= n; i++) {for (int j = 2; j < i; j++) {dp[i][j] = Math.min(dp[i - 1][j - 1], dp[i - 1][j]) + triangle.get(i - 1).get(j - 1);}}// 寻找最后一行最小值int min = dp[n][1];for (int j = 2; j <= n; j++) {if (dp[n][j] < min) {min = dp[n][j];}}return min;}
}

解法二:动态规划 + 空间优化
在这里插入图片描述在这里插入图片描述

class Solution {public int minimumTotal(List<List<Integer>> triangle) {int n = triangle.size();// dp[j]:走到当前层第j个的最小路径和int[] dp = new int[n];dp[0] = triangle.get(0).get(0);for (int i = 1; i < n; i++) {// 初始化第i行最后一个位置dp[i] = dp[i - 1] + triangle.get(i).get(i);// 滚动递推第i行前面的位置, 【因为要用到上一行左边的值,所以这里要倒序】for (int j = i - 1; j > 0; j--) {dp[j] = Math.min(dp[j - 1], dp[j]) + triangle.get(i).get(j);}// 更新第i行第一个位置的路径和dp[0] += triangle.get(i).get(0);}// 寻找最后一行最小值int min = dp[0];for (int j = 1; j < n; j++) {if (dp[j] < min) {min = dp[j];}}return min;}
}
http://www.lryc.cn/news/392172.html

相关文章:

  • 【大数据面试题】35 Spark 怎么做优化?
  • 2024年保安员职业资格考试题库大数据揭秘,冲刺高分!
  • 怎么搭建个人博客教程,附云主机选购指南
  • 使用Llama3/Qwen2等开源大模型,部署团队私有化Code Copilot和使用教程
  • C语言_结构体初阶(还未写完)
  • MyBatis-Plus:快速入门
  • 【高级篇】第9章 Elasticsearch 监控与故障排查
  • 【前端】上传和下载zip文件,有进度条(el-progess)
  • 2024年软件测试面试题,精选100+,附答案+文档
  • 在vue项目的.gitignore文件忽略不想要提交到git仓库的文件
  • 时序(流式)图谱数据仓库AbutionGraph功能介绍-Streaming Graph OLAM Database
  • windows实现Grafana+Loki+loki4j轻量级日志系统,告别沉重的ELK
  • 跟《经济学人》学英文:2024年06月01日这期 The side-effects of the TikTok tussle
  • Ubuntu安装PostgreSQL
  • 【HarmonyOS NEXT】鸿蒙如何让List组件不满一屏时,还要能滑动和回弹
  • JDK-SPI-服务提供者接口
  • 【docker】容器内配置环境变量
  • Java 乐观锁与悲观锁
  • python学习2-数据结构与算法-链表
  • 项目一 nfs 共享服务器 Haproxy 代理 Keepalive 高可用集群
  • TCP粘包解决方法
  • 高职人工智能专业实训课之“生成对抗网络(GAN)”
  • 【MySQL系列】隐式转换
  • 亿发:信息化建设or面子工程?究竟什么才是真正的信息化解决方案
  • 【微信小程序开发实战项目】——如何制作一个属于自己的花店微信小程序(1)
  • 树形结构C语言的实现
  • 小程序渗透测试的两种方法——burpsuite、yakit
  • 代码随想录训练营Day56
  • S32K3 工具篇4:如何在S32DS中使用lauterbach下载
  • 深度神经网络语言识别