首页 > 其他分享 >力扣---931. 下降路径最小和

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

时间:2023-07-13 10:24:03浏览次数:32  
标签:力扣 matrix int len --- temArr 931 dp row

给你一个 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[][] matrix) {
        int len = matrix[0].length;
        // 只需要上一层的最小值,不需要之前的值,所以用一维数组省空间。
        int[] dp = new int[len];
        // Arrays 类中的 copyof 方法,实际上也是调用的 System.arraycopy() 方法,但速度会慢得多。
        System.arraycopy(matrix[0], 0, dp, 0, len);
        for (int i = 1; i < len; i ++) {
            int[] temArr = new int[len];
            Arrays.fill(temArr, Integer.MAX_VALUE);
            for (int j = 0; j < len; j++) {
                for (int k = -1; k < 2; k ++) {
                    // 考虑边界条件。
                    if (j + k >= 0 && j + k < len) {
                        temArr[j] = Math.min(temArr[j], matrix[i][j] + dp[j + k]);
                    }
                }
            }
            dp = temArr;
        }
        int res = Integer.MAX_VALUE;
        for (int x : dp) {
            res = Math.min(res, x);
        }
        return res;
    }
}

 

标签:力扣,matrix,int,len,---,temArr,931,dp,row
From: https://www.cnblogs.com/allWu/p/17549685.html

相关文章

  • 【2023-07-12】一举多得
    20:00世上哪有那么多坏人。有很多人只是运气不好罢了。                                                 ——贝蒂·史密斯本周日是何太的生日,如果单单只是在家里买个......
  • net core-异步,同步理解
    并发: 一个车间只有一台机器,所有的工人都需要完成相同的工作,谁先抢到这个机器谁先工作,其余人需要等待。并行: 一个车间有4台机器,有4个工人,四个工人分别使用四台机器,同时执行任务,不用等待其它工人任务执行完毕。单线程: 当有三件事要处理,乙需要在甲之后处理,同时丙需要在乙之......
  • Jq-table 拖拽顺序
    使用sortable对table列表进行拖拽排序<tableid="sort"name="Register_GameId"class="tabletable-borderedui-sortable"><tbody><trstyle="opacity:1;"class=""><td><inputtype="......
  • H7-TOOL发布固件V2.22, 增加FreeRTOS/uCOS2 Trace,加强RTT和CAN助手,脱机烧录增加比亚迪
    H7-TOOL发布固件V2.22,增加FreeRTOS/uCOS2Trace,加强RTT和CAN助手,脱机烧录增加比亚迪,上海芯圣51,TI,S32K3,钜泉光电等 H7-TOOL所有资源汇总(含操作手册):http://www.armbbs.cn/forum.php?mod=viewthread&tid=89934 PC机软件:升级PC软件到V2.2.2h7toolPC_release(V2.2.2)......
  • ubuntu20使用iptables-persistent libfakeroot libxtables-dev netfilter-persistent
    实施防火墙是保护服务器安全的重要一步。其中很大一部分是决定将对您的网络实施流量限制的单个规则和策略。像iptables这样的防火墙还允许您对应用规则的结构框架有发言权。在本指南中,您将学习如何构建防火墙,作为更复杂规则集的基础。该防火墙将主要关注提供合理的默认值和建立......
  • 【雕爷学编程】Arduino动手做(160)---海凌科HLK-V20离线语音模块
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题......
  • SSO2.0 24-20230712
                    ......
  • Java虚拟机(JVM):第五幕:自动内存管理 - HotSpot算法细节以及低延迟垃圾收集器
    一、HotSpot算法细节1、根节点枚举:所有的收集器在根节点枚举的时候,必须暂停用户线程,同时要保证一致性的快照中得以进行。一致性:整个枚举期间执行子系统看起来就像是冻结在某一个时间点上,不会出现分析过程中,根节点的对象应用关系还在不断变化的情况。2、安全点:用户程序执......
  • PYTHON随笔-logging
    PYTHON随笔-loggingimportloggingfromlogging.handlersimportRotatingFileHandlergLogFile='/home/mcs/log/dbm_py.log'LOG_FORMAT="%(asctime)s[%(levelname)-5s][%(filename)s:%(lineno)s]-%(message)s"#日志输出的格式#-8表示占位符,让输出左对齐,输......
  • 题单-数学
    1.进制转换题目描述请你编一程序实现两种不同进制之间的数据转换。输入格式共三行,第一行是一个正整数,表示需要转换的数的进制\(n\(2\len\le16)\),第二行是一个\(n\)进制数,若\(n>10\)则用大写字母\(\verb!A!\sim\verb!F!\)表示数码\(10\sim15\),并且该\(n\)进制......