力扣:931. 下降路径最小和

news2024/9/24 11:22:39

931. 下降路径最小和

给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径  最小和 。

下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)(row + 1, col) 或者 (row + 1, col + 1) 。

示例 1:

输入:matrix = [[2,1,3],[6,5,4],[7,8,9]]
输出:13
解释:如图所示,为和最小的两条下降路径

示例 2:

输入:matrix = [[-19,57],[-40,-5]]
输出:-59
解释:如图所示,为和最小的下降路径

提示:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 100
  • -100 <= matrix[i][j] <= 100
class Solution {
    public int minFallingPathSum(int[][] ma) {
        int n = ma.length;
        int[][] dp = new int[n][n];
        for(int i = 0;i < n;i++){
            dp[0][i] = ma[0][i];
        }
        int min = Integer.MAX_VALUE;
        if(n==1){
            for(int i = 0;i < n;i++){
                min = Math.min(min,dp[0][i]);//排除行为1的情况
            }
            return min;
        }
        for(int i = 1;i < n;i++){
            for(int j = 0;j < n;j++){
                if(j==0){//左直边
                    dp[i][j] = Math.min(dp[i-1][j],dp[i-1][j+1]) + ma[i][j];//由上方和右上方推导
                }else if(j==n-1){//右直边
                    dp[i][j] = Math.min(dp[i-1][j],dp[i-1][j-1]) + ma[i][j];//由上方和左上方推导
                }else{
                    dp[i][j] = Math.min(dp[i-1][j],Math.min(dp[i-1][j-1],dp[i-1][j+1])) + ma[i][j];//由上方和左上方和右上方推导
                }
            }
        }
        for(int i = 0;i < n;i++){//找到最小的值
            min = Math.min(min,dp[n-1][i]);
        }
        return min;
    }
}

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

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

相关文章

全新神经网络架构KAN一夜爆火!

一种全新的神经网络架构KAN&#xff0c;诞生了&#xff01; 与传统的MLP架构截然不同&#xff0c;且能用更少的参数在数学、物理问题上取得更高精度。 比如&#xff0c;200个参数的KANs&#xff0c;就能复现DeepMind用30万参数的MLPs发现数学定理研究。 不仅准确性更高&#…

smardatenR5C40无代码新版本正式发布!附功能详解

smardatenR5C40新特性在25日晚直播发布&#xff0c;新版本上线了两大全新功能&#xff0c;对四大已有能力进行了增强&#xff01;没来得及参与的宝子们可以在“数睿数据视频号”中查看直播回放。 往下看具体详解&#xff0c;这些功能正被你所需要 一、全新能力发布 01数据报表…

图像识别——玩转YOLO网络

图像识别——玩转YOLO网络 YOLO&#xff0c;全称“You Only Look Once”&#xff0c;意为你只需要看一次&#xff0c;是一种快速、准确的目标检测算法。它由Joseph Redmon等人在2016年提出&#xff0c;其核心思想是将输入图像划分为SS个网格单元&#xff0c;每个网格预测B个边…

Day19 代码随想录打卡|字符串篇---反转字符串II

题目&#xff08;leecode T541&#xff09;&#xff1a; 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。如果剩余字符小…

现代信号处理8_递归的最小二乘(CSDN_20240505)

递归的最小二乘大约出现在50年前。递归&#xff0c;就是在已经算出的结果的基础下&#xff0c;当新的数据到来时&#xff0c;不需要再对数据进行一次完整的运算&#xff0c;而是在已有结果的基础上做一些简单的调整&#xff0c;就能得到新的结果。使用递归的好处&#xff1a; …

矩阵式键盘的控制

键盘扫描是最 为常用的工作方式&#xff0c;扫描方式又可分为程序程扫描、定时扫描和中断扫描。程序扫描是指在 特定的程序位置段上安排键盘扫描程序读取键盘状态。定时扫描是指利用单片机内部或扩展 的定时器产生定时中断&#xff0c;在中断中进行键盘扫描的工作方式。中断扫描…

2024年第二十六届“华东杯”(B题)大学生数学建模挑战赛|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看华东杯 (B题&#xff09;&#xff01; 第一个问题…

链表经典面试题02--链表的带环问题

目录 引言 环形链表 题目描述: 思路分析: 代码展示: 面试中遇到的问题: 环形链表Ⅱ 题目描述: 思路分析: 代码展示: 面试中遇到的问题: 方法二: 随机链表的复制 题目描述: 思路分析: 代码展示: 小结 引言 这个专题专门讲解链表的带环问题,并且对面试有关链表带环…

华中科技大学雷达站部署

一&#xff1a;项目地址 GitHub - HUSTLYRM/HUST_Radar_2023: 华中科技大学狼牙战队 RoboMaster 2023赛季 雷达站 二&#xff1a;安装依赖 2.1创建虚拟环境 首先是程序是基于python3.8完成&#xff0c;所以创建虚拟环境的时候&#xff0c;选择3.8的虚拟环境 conda create -…

【Linux】详解用户态和内核态内核中信号被处理的时机sigaction信号自定义处理方法

一、用户态和内核态的理解 在操作系统中&#xff0c;用户态和内核态是两种主要的执行模式&#xff0c;它们代表了不同的访问级别和权限&#xff0c;用于确保系统的安全和稳定性。 1.1、用户态 用户态是操作系统中用户进程的运行状态。在这种状态下&#xff0c;进程只能访问受限…

天锐绿盾 | 如何保护企业数据安全?

天锐绿盾为企业数据安全提供了一系列综合性的保护措施&#xff0c;确保数据在存储、处理、传输等各个环节的安全性。 PC地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 具体措施包括&#xff1a; 文件透明加密&#xff1a;采…

病毒防护的基础知识

目录 1.震网病毒Stuxnet是蠕虫病毒 2.宏病毒Macro virus 3.X卧底Phishing 4.钓鱼网站 5.病毒类型 1.震网病毒Stuxnet是蠕虫病毒 Stuxnet蠕虫病毒&#xff08;超级工厂病毒&#xff09;是世界上首个专门针对工业控制系统编写的破坏性病毒&#xff0c;能够利用对windows系统…

菜鸟跟着一起学如何批量修改文件日期时间属性 (创建、修改、访问时间)

需求&#xff1a;批量修改指定文件夹下的文件的创建时间、修改时间和访问时间 工具&#xff1a;【汇帮元数据编辑器】和【汇帮批量重命名】 文件一般有三个时间属性&#xff0c;分别是创建时间、修改时间和访问时间&#xff0c;如果你从别的地方拷贝的文件&#xff0c;创建时…

【手撸RPC框架】netty入门

&#x1f43c;作者简介&#xff1a;一名大三在校生&#x1f38b; 空有想法&#xff0c;没有实践&#xff0c;难成大事 专栏前言&#xff1a;探索RPC框架的奥秘 简介&#xff1a;在现代软件开发中&#xff0c;随着微服务架构的普及&#xff0c;远程过程调用&#xff08;RPC&…

全网最全!场外个股期权和场内个股期权的区别的详细解析

场外个股期权和场内个股期权的区别 场外个股期权是指在沪深交易所之外交易的个股期权&#xff0c;其本质是一种金融衍生品&#xff0c;允许投资者在股票交易场所外以特定价格买进或卖出证券。场内个股期权是以单只股票作为标的资产的期权合约&#xff0c;其内在价值是基于标的…

编程入门(六)【Linux系统基础操作一】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 &#x1f525;前言&#x1f680;Linux操作系统介绍与环境准备Linux操作系统介…

Java中的枚举类型介绍

一、背景及定义 情景&#xff1a; 枚举是在JDK1.5以后引入的。 主要用途是&#xff1a; 将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; 这种定义方式实际上并不好。 例如&#xff1a;如果碰巧有另一个变量也是1&#xff0c;那么…

举个栗子!Alteryx 技巧(11):运用目录工具

你了解目录工具吗&#xff0c;它有什么作用&#xff1f;目录工具可以返回指定目录中所有文件的列表&#xff0c;即返回文件名和有关文件的其他信息&#xff0c;例如文件大小、创建日期、上次修改日期等。那么&#xff0c;怎样运用目录工具返回相关信息呢&#xff1f; 本期《举…

面对 800G 以太网设计的挑战

以太网是一种广泛使用的网络技术&#xff0c;用于连接局域网和广域网中的设备。它以 10 Mbps 的适度速度开始&#xff0c;多年来经历了大规模的创新。如今&#xff0c;以太网技术正朝着 800 Gbps 的速度发展&#xff0c;为数据中心和云计算基础设施等高需求环境提供超快的数据传…

Python-VBA函数之旅-pow函数

目录 一、pow函数的常见应用场景 二、pow函数使用注意事项 三、如何用好pow函数&#xff1f; 1、pow函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;神奇夜光杯-CSDN博客 一、pow函数的常见应用场景 Py…