• Leetcode题目64.最小路径和(动态规划-中等)


    题目描述:

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

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

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

    题目解析:

    动态规划,用dp[i][j]表示到i,j的最小路径和.

    动态方程: dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]

    注意这里的第一行,和第一列要单独考虑,

    代码实现:(自顶至下)

    class Solution {
        
          public  int minPathSum(int[][] grid) {
    
            if (grid == null || grid.length == 0) {
                return 0;
            }
            int row = grid.length;
            int col = grid[0].length;
            int[][] dp = new int[row][col];
            dp[0][0] = grid[0][0];
            //初始化第一行
            for (int j = 1; j < col; j++) {
                dp[0][j] = dp[0][j - 1] + grid[0][j];
            }
            //初始化第一列
            for (int i = 1; i < row; i++) {
                dp[i][0] = dp[i - 1][0] + grid[i][0];
            }
            for (int i = 1; i < row; i++) {
                for (int j = 1; j < col; j++) {
                    dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
                }
            }
    
            return dp[row - 1][col - 1];
        }
    }

    时间复杂度:O(M*N)

    空间复杂度:O(M*N)

    类似于题目62-不同路径问题,可使用一维数组保存中间结果,空间复杂度优化至O(N);

  • 相关阅读:
    jmeter-配置元件---计数器
    jmeter进行数据库测试
    jmeter取样器--FTP测试计划
    配置元件--HTTP授权管理器
    配置元件--HTTP Cookie Manager
    配置元件--HTTP Cache Manager
    配置元件-HTTP信息头管理器
    配置元件--csv data config
    jmeter-线程组
    jmeter-测试计划
  • 原文地址:https://www.cnblogs.com/ysw-go/p/11810438.html
Copyright © 2020-2023  润新知