题目解析:
每一个位置的路径和 = min(左边经过的路径, 上边经过的路径),加上当前走过的路径。
class Solution(object):
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
m, n = len(grid), len(grid[0])
for i in range(1, n): # 第一行每个位置的路径和 使用前缀和计算
grid[0][i] += grid[0][i-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[m-1][n-1]