1. 程式人生 > >64. Minimum Path Sum最短路徑——動態規劃

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]