zoukankan      html  css  js  c++  java
  • 64. Minimum Path Sum

    64. Minimum Path Sum

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

    Note: You can only move either down or right at any point in time.

    Example:

    Input:
    [
      [1,3,1],
      [1,5,1],
      [4,2,1]
    ]
    Output: 7
    Explanation: Because the path 1→3→1→1→1 minimizes the sum.
    

    2. 思路

    本题的要求是从矩阵的左上角到右下角找出总和最小的路径。那么什么样的路径总和最小呢。如果走到了第i行第j列要是总和最小,则要求能够到达第i行第j列的前一步的总和最小:

    dp[i] [j] = grid[i] [j] + min(dp[i-1] [j],dp[i] [j-1])

    3. 实现

    class Solution(object):
        def minPathSum(self, grid):
            """
            :type grid: List[List[int]]
            :rtype: int
            """
            row = len(grid)
            col = len(grid[0])
            dp = [ [ 0 for j in range(0,col)] for i in range(0,row)  ]
            
            dp[0][0] = grid[0][0]
            for i in range(1,row):
                dp[i][0] = dp[i-1][0] + grid[i][0]
                
            for j in range(1,col):
                dp[0][j] = dp[0][j-1] + grid[0][j]
                
            for i in range( 1, row ):
                for j in range( 1, col):
                    dp[i][j] = grid[i][j] + min(dp[i-1][j],dp[i][j-1])
            
            return dp[row-1][col-1]
    
  • 相关阅读:
    SQL server 数据库基础语句
    数据库学习的第一天
    C# 函数
    C# for循环的嵌套 作用域
    C# for循环语句
    Docker的基本使用
    django连接postgresql
    docker的安装
    Postgresql的使用
    Celery的介绍
  • 原文地址:https://www.cnblogs.com/bush2582/p/10926122.html
Copyright © 2011-2022 走看看