矩阵的最小路径和

刚才刷算法题遇见这样一道题

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

示例
image

这题解题思路很是很清晰的:
1.首先新数组第一行和第一列的数据肯定是确定的,都是这个数据加上前面的数据的和(当前数据都是当前数据加上前一个数据,就是和)
2.其余的(从第二列第二个数据开始)后面的数据都是根据左边或者上方最小的部分加来的,这些节点都是当前值加上上方或者左方节点

 public int minPathSum (int[][] matrix) {
        // write code here
        int m = matrix.length;
        int n = matrix[0].length;
        int[][] result = new int[m][n]; //创建一个一样的二维数组存放结果
        
        result[0][0] = matrix[0][0]; //第一行第一列数字
        
        //第一行的数据
        for(int i = 1;i < n;i++){
            result[0][i] = result[0][i-1] + matrix[0][i];
        }
        
        //第一列的数据
        for(int i = 1;i < m;i++){
            result[i][0] = result[i-1][0] + matrix[i][0];
        }
        
        //从第二行第二个的数据来源都是上方或者左方向,我们只需要计算他们和最小值求出
        for(int i = 1;i < m;i++){
            for(int j = 1;j < n;j++){
                result[i][j] = matrix[i][j]+Math.min(result[i][j-1],result[i-1][j]);
            }
        }
        return result[m-1][n-1];//二维数组最后一个数字就是最短距离
        }
posted @   Diamond-fz  阅读(133)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示