• 最小路径和


    给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

    说明:每次只能向下或者向右移动一步。

    示例:

    输入:
    [
      [1,3,1],
      [1,5,1],
      [4,2,1]
    ]
    输出: 7
    解释: 因为路径 1→3→1→1→1 的总和最小。

    解决思路:

    a

    c

    b

    对于网格中的点a,到达右下角要么经过b要么c,若已知b、c最短路径和分别为sum(b)、sum(c),则a点的最短路径和为sum(a) = Math.min(sum(b), sum(c));

    实现代码如下:

        public static int minPathSum(int[][] grid) {
    
            int M = grid.length;
            int N = grid[0].length;
    
            // 填写最后一列
            for (int i=M-2; i>=0; i--)
                grid[i][N-1] += grid[i+1][N-1];
    
            // 填写最后一行
            for (int j=N-2; j>=0; j--)
                grid[M-1][j] += grid[M-1][j+1];
    
            for (int j=N-2; j>=0; j--)
                for (int i=M-2; i>=0; i--)
                    grid[i][j] += Math.min(grid[i+1][j], grid[i][j+1]);
    
            return grid[0][0];
        }
  • 相关阅读:
    nginx接收tcp请求转发server
    eclipse 配置github 提交代码
    eclipse安装JDK11
    java内存管理
    进程 线程 纤程 中断
    DCL单例为什么要加volatile
    如何清理history
    后置引用
    nc 工具使用
    ip_local_port_range 和 ip_local_reserved_ports
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9052730.html
Copyright © 2020-2023  润新知