64. Minimum Path Sum最短路径——动态规划

这类问题的解决思路往往都是动态规划
参考 https://blog.csdn.net/u014615155/article/details/77941488

对于网格中的元素grid[i][j],从最上角的元素grid[0][0]走到它的最短距离为:
grid[i][j]=min(grid[i-1][j],grid[i][j-1])+grid[i][j]
因此,这题的思路是:首先计算出第一行和第一列,从左到右,从上到下的步数。然后从第二行第二列开始,采用动态规划的方法。

class Solution:
    def minPathSum(self, grid):
        """
        :type grid: List[List[int]]
        :rtype: int
        """
        m = len(grid)
        n = len(grid[0])
        for j in range(1,n):
            grid[0][j] +=grid[0][j-1]
        for i in range(1,m):
            grid[i][0]+=grid[i-1][0]
        for i in range(1,m):
            for j in range(1,n):
                grid[i][j]=min(grid[i-1][j],grid[i][j-1])+grid[i][j]
        return grid[-1][-1]

猜你喜欢

转载自blog.csdn.net/aaon22357/article/details/83991285