64. Minimum Path Sum最短路徑——動態規劃
阿新 • • 發佈:2018-11-13
這類問題的解決思路往往都是動態規劃
參考 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]