BM68-矩阵的最小路径和

该问题是一个典型的动态规划问题,给定一个n*m的矩阵,从左上角到右下角,每次只能向右或向下移动,目标是找到路径和最小的路径。代码中通过创建dp表,初始化边界条件,然后逐行填充dp表,计算每个位置的最小路径和。最终返回dp[m][n]即为最小路径和。

题目

给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。

数据范围: 1≤n,m≤500,矩阵中任意值都满足 0≤ai,j​≤100

要求:时间复杂度O(nm)

例如:当输入[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]]时,对应的返回值为12,

所选择的最小累加和路径如下图所示:

示例1

输入:

[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]]

返回值:

12

示例2

输入:

[[1,2,3],[1,2,3]]

返回值:

7

备注:

1≤n,m≤2000

1≤ai,j​≤100


代码

import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * @param matrix int整型二维数组 the matrix
     * @return int整型
     */
    public int minPathSum (int[][] matrix) {
        //1.创建dp表
        int m = matrix.length, n = matrix[0].length;
        int[][] dp = new int[m + 1][n + 1];

        //2.初始化
        for(int i = 0; i <= m; i ++) {
            dp[i][0] = Integer.MAX_VALUE;
        }
        for(int j = 0; j <= n; j++) {
            dp[0][j] = Integer.MAX_VALUE;
        }
        dp[0][1] = dp[1][0] = 0;

        //3.填表
        for(int i = 1; i <= m; i++) {
            for(int j = 1; j <= n; j++) {
                dp[i][j] = Math.min(dp[i- 1][j], dp[i][j - 1]) + matrix[i - 1][j - 1];
            }
        }

        //4.返回值
        return dp[m][n];
    }
}

### 回答1: 解决 "no space left on device" 错误的方法有多种,具体取决于你的系统和使用场景。常见的做法有: 1. 删除不必要的文件和文件夹,释放空间。 2. 清理缓存和日志文件。 3. 扩大磁盘容量,如果是虚拟机的话可以增加磁盘大小. 4. 使用磁盘整理工具,如“df”,“du”等。 5. 使用云存储服务,将数据存储在云端。 6. 如果是Docker容器,可以通过增加镜像大小来解决. ### 回答2: “No space left on device” 是一个经常出现的错误信息,这表示您的计算机存储设备没有足够的可用空间来执行所需的操作。通常出现这个问题的原因是您的硬盘已经满了,因为您下载或安装了太多的文件和应用程序。如果您没有采取任何行动,这个问题可能会导致计算机功能受到限制,系统运行缓慢,或数据丢失的风险。 下面是一些解决方案来解决这个问题: 1. 删除不需要的文件和应用程序:通过删除不需要的文件和应用程序,释放一些可用的存储空间。这可以通过手动删除文件、卸载程序或使用优化软件来完成。确保您只删除不必要的文件和应用程序,以避免删除您的重要文件或系统文件。 2. 扩展硬盘容量:如果您的硬盘已经满了,那么最好的解决方案就是扩展硬盘容量。这可以通过添加更大的硬盘或使用外部硬盘来完成。确保您选择的硬盘与您的系统兼容,并遵循正确的安装过程,以避免数据丢失和系统崩溃。 3. 压缩文件:硬盘空间很少时,压缩文件可以节省很多空间。通过使用压缩软件,您可以将文件压缩到更小的空间,以节省硬盘空间。但请注意,压缩文件可能会影响文件的质量和可读性。 4. 清理临时文件:临时文件是操作系统和应用程序在计算机上生成的文件,这些文件通常可以被删除以释放一些硬盘空间。您可以使用系统清理工具或第三方应用程序来清理临时文件。 以上是一些解决 "No space left on device" 的方法。如果问题仍然存在,请参考您的操作系统手册或咨询计算机专业人员。总之,定期检查并管理您的硬盘空间是维护计算机健康的绝佳方式。 ### 回答3: “No space left on device”指的是设备上没有足够的可用空间,无法写入或创建新文件或目录。这种情况通常发生在磁盘分区已满或文件系统已达到上限的情况下。 解决No space left on device”的方法有以下几种: 1.清理磁盘空间:删除不必要的文件、应用程序或其他数据,以释放空间。通过使用磁盘分析工具,可以了解哪些文件或文件夹占用了大量空间,然后进行删除或移动。 2.扩展分区大小:如果使用的是Linux操作系统,可以使用分区调整工具,扩展现有的分区大小。 3.移动文件到其他存储设备:将文件移动到其他存储设备上,例如外部硬盘驱动器,以释放空间。 4.清理日志文件:许多应用程序创建大量的日志文件,这些文件会占用大量的磁盘空间。可以使用合适的日志清理程序或手动删除这些文件。 5.升级硬盘或添加存储设备:如果以上方法都无效,可以将硬盘升级或添加其他存储设备。 最好的方法是根据自己的具体情况,采取正确的方法来解决No space left on device”的问题。重要的是要记得备份所有重要的数据,以防进行任何更改时出现意外的数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值