LeetCode-120. 三角形最小路径和

news2025/9/18 15:08:09

目录

    • 题目思路
    • 动态规划(由上到下)
    • 动态规划(由下到上)

题目来源
120. 三角形最小路径和

题目思路

由上往下
在这里插入图片描述

动态规划(由上到下)

  • 1.确定dp数组以及下标的含义

dp[i][j] 表示从点 (i,j)) 到底边的最小路径和。

  • 2.确定递推公式

常规: triangle[i][j]一定会经过triangle[i-1][j]或者triangle[i-1][j-1], 所以状态dp[i][j]一定等于dp[i-1][j]或者dp[i-1][j-1]的最小值+triangle[i][j]
特殊: triangle[i][0]没有左上角 只能从triangle[i-1][j]经过 triangle[i][0]
triangle[i][row[0].length-1]没有上角 只能从triangle[i-1][j-1]经过 triangle[i][row[0].length-1]
转换方程:dp[i][j]=Math.min(dp[i-1][j],dp[i-1][j-1])+triangle[i][j]

  • 3.dp数组如何初始化

由递推公式dp[i][j]=Math.min(dp[i-1][j],dp[i-1][j-1])+triangle[i][j]可知,我们要推前面的一个,所以dp[0][0] = triangle.get(0).get(0);

  • 4.确定遍历顺序

由递推公式dp[i][j]=Math.min(dp[i-1][j],dp[i-1][j-1])+triangle[i][j]可知,我们要推前面的一个,便利是顺序从上往下,从左到右

代码实现

class Solution {
    public int minimumTotal(List<List<Integer>> triangle) {
        int n = triangle.size();
        int[][] dp = new int[n][n];
        dp[0][0] = triangle.get(0).get(0);
        for(int i = 1;i<dp.length;i++){
            for(int j =0;j<=i;j++){
                if(j == 0){
                    dp[i][j] = dp[i-1][j]+triangle.get(i).get(j);
                }else if(j==i){
                    dp[i][j] = dp[i-1][j-1]+triangle.get(i).get(j);
                }else{
                    dp[i][j] = Math.min(dp[i-1][j],dp[i-1][j-1])+triangle.get(i).get(j);
                }
            }
        }
        int minNum = Integer.MAX_VALUE;
        for(int i = 0;i<n;i++){
            minNum = Math.min(minNum,dp[n-1][i]);
        }
        return minNum;
    }
}

在这里插入图片描述

动态规划(由下到上)

这种思路的好处是上面越来越小,没有边界的特殊处理

class Solution {
    public int minimumTotal(List<List<Integer>> triangle) {
        int n = triangle.size();
        int[][] dp = new int[n+1][n+1];
        for(int i = n-1;i>=0;i--){
            for(int j = i;j>=0;j--){
                dp[i][j] = Math.min(dp[i+1][j],dp[i+1][j+1])+triangle.get(i).get(j);
            }
        }
        return dp[0][0];
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL语句性能分析

1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢&#xff1f;这里把思考的流程整理成下面这张图。 整个流程划分成了 观察&#xff08;Show status&#xff09; 和 行动&#xff08;Action&#xff09; 两个部分。字母 S 的部分代表观察&…

连续可调稳压升压电源模块12v转12kv 24v转15kv 12v转5000v

GRB系列高压电源模块是一款工业级高性能微型DC/DC电源模块&#xff0c;是目前全球实 现输出连续可调稳压1000-15000V的超小体积的高压电源模块。具有体积小、功 耗低、响应快、输出纹波低、输出稳定度高、输出电压宽范围可调、自带过流保 护等优点&#xff0c;是一款专门为工业…

uniapp 之 小球根据当前时间 显示位置

目录 效果图 前言 总代码 1. template 代码 2. script 代码 3. js文件 4.样式 注解 1.小球运动代码 2. picker 时间选择器 补充 效果图 前言 最里面的是一张图片&#xff0c;并不是手写的样式&#xff0c; 总代码 1. template 代码 <uni-popup ref"appointm…

一图看懂 stat 模块:解析 stat() 结果, 资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 [TOC](一图看懂 stat 模块&#xff1a;解析 stat() 结果, 资料整理笔记&#xff08;大全&#xff09;) 摘要 全文介绍系统内置 stat 模块、函数、类及类的方法和属性。 它通过代码抓…

通过自动化和条形码优化供应链

Welch Allyn是全球领先的医疗诊断设备制造商&#xff0c;开发了数百种突破性产品和技术&#xff0c;使一线从业者能够提供卓越的患者护理。它在26个不同的国家拥有近2&#xff0c;500名员工。 一、面临的挑战提高运营效率 原因&#xff1a;用户需要长途跋涉并浏览多个数据条目以…

HCIA第一次笔记

目录 网络基础 扩大网络的两种途径 1.增加网络节点——集线器(HUB) 2.增大传输距离——中继器(放大器) 解决网络问题——网桥、交换机(二层设备) 交换机——读和重写的操作 解决洪泛——路由器(三层设备) 区分是否在同一个洪泛范围——IP(Internet Protocol)地址 ARP协…

redis缓存穿透、案例

1、缓存穿透是什么 缓存穿透是指查询一个一定不存在的数据&#xff0c;由于缓存是不命中时需要从数据库查询&#xff0c;查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到数据库去查询&#xff0c;进而给数据库带来压力。 其实&#xff1a;就是黑客…

多线程冲突处理方法,锁

线程之间是可以共享进程的资源&#xff0c;比如代码段、堆空间、数据段、打开的文件等资源&#xff0c;但每个线程都有自己独立的栈空间。 那么问题就来了&#xff0c;多个线程如果竞争共享资源&#xff0c;如果不采取有效的措施&#xff0c;则会造成共享数据的混乱。 我们做…

STM32+收发器实现CAN和485总线

RS485总线是一种常见的(Recommended Standard)串行总线标准(485是它的标识号)&#xff0c;采用平衡发送与差分接收的方式&#xff0c;因此具有抑制共模干扰的能力。CAN是控制器局域网络(Controller Area Network, CAN)的简称&#xff0c;是一种能够实现分布式实时控制的串行通信…

推特爆火!揭晓大模型的未来何去何从

文 | 智商掉了一地巨大挑战 or 发展契机&#xff0c;ChatGPT 和 GPT-4 出现后&#xff0c;大模型的未来方向该何去何从&#xff1f;近期&#xff0c;自然语言处理领域的快速发展引起了广泛的关注&#xff0c;尤其是大型语言模型&#xff08;LLM&#xff09;的兴起已经推动了该领…

4.13、TCP通信流程

4.13、TCP通信流程1.TCP与UDP的区别&#xff08;传输层协议&#xff09;2.TCP通信流程①服务器端&#xff08;被动接受连接的角色&#xff09;②客户端&#xff08;主动发起连接&#xff09;1.TCP与UDP的区别&#xff08;传输层协议&#xff09; UDP:用户数据报协议&#xff0…

【Linux系统文件管理(cat,awk指令)和网络IP配置,广播地址,修改子网掩码以及ping网关地址】

文本操作实验 &#xff08;1&#xff09;使用cat&#xff0c;创建文件test1&#xff0c;输入"Line1"并且按下Ctrl-D保存文件。 创建text01.txt文件&#xff1a; cat > text01.txt 回车&#xff1b;输入自己想要输入的内容 键盘上面按下Ctrl-D就可以成功创建并保存…

【Java版oj】day24洗牌、MP3光标位置

目录 一、洗牌 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、MP3光标位置 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、洗牌 &#x…

西安石油大学C++上机实验 上机三:继承和派生程序设计(2学时)

上机三&#xff1a;继承和派生程序设计&#xff08;2学时&#xff09; 实验目的 了解继承在面向对象程序设计中的重要作用。 理解继承与派生的概念。 掌握通过继承派生出一个新类的方法。 掌握虚基类的作用和用法。 实验内容 P169&#xff1a;5.19, 5.22 上机内容 先设…

Windows 10 上使用 CMake GUI 编译 Krita 源代码并使用 MinGW 64 作为构建工具

krita系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文…

TCP和UDP(嵌入式学习)

TCP和UDPTCP&#xff08;即传输控制协议&#xff09;TCP连接建立(三次握手)TCP连接终止&#xff08;四次挥手&#xff09;UDP &#xff1a;用户数据报协议适用情况UDP 洪水UDP TCP 协议相同点TCP&#xff08;即传输控制协议&#xff09; 是一种面向连接的传输层协议&#xff0…

Vue ElementUI Axios 前后端案例(day01)

前言js 问js是什么&#xff0c;他有什么作用&#xff0c;与html和css的区别是什么 JavaScript&#xff08;简称JS&#xff09;是一种脚本语言&#xff0c;用于在网页上实现交互效果、动态效果和动态数据更新等功能。它是一种解释性语言&#xff0c;需要在浏览器中解释和执行。…

Linux中安装新版minio(centos7版本)

1. 背景需求 由于一些限制,在客户现场的Linux操作系统中,没有安装docker k8s等容器,无法直接使用镜像安装,而且客户要求只能在原始的操作系统中安装最新版的minio,(为什么需要安装最新版的minio,因为检测国网检测到之前版本的minio有漏洞,需要安装新版的minio). 2. 安装minio…

Direct3D 12——纹理——纹理缩小

纹理缩小(miniflcation )是纹理放大的逆运算。在缩小的过程中&#xff0c;大量纹素将被映射到少数纹理之 上 。例如&#xff0c;考虑下列情景&#xff1a;假设有一堵被256x256纹理所映射的墙壁&#xff0c;玩家的观察视角正紧盯着它&#xff0c;并 逐渐向后退却。在此过程中&am…

QML控件--Drawer

文章目录一、控件基本信息二、控件使用三、属性成员一、控件基本信息 Import Statement&#xff1a;import QtQuick.Controls 2.14 Since&#xff1a;Qt 5.7 Inherits&#xff1a;Popup 二、控件使用 Drawer&#xff1a;提供一个可以使用滑动手势打开和关闭的侧面板&#xff…