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 1:
[[1,3,1], [1,5,1], [4,2,1]]Given the above grid map, return
7
.
Because the path 1→3→1→1→1 minimizes the sum.这题还是类似的动态规划,判断条件变为取两个数之间最小的。
因此,例子中的结果矩阵为:
[[1,4,5], [2,7,6], [6,8,7]]所以结果为7
class Solution(object):
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
row = len(grid)
col = len(grid[0])
res = [[0 for i in range(col)] for j in range(row)]
res[0][0] = grid[0][0]
for i in range(1, row):
res[i][0] = res[i-1][0] + grid[i][0]
for i in range(1, col):
res[0][i] = res[0][i-1] + grid[0][i]
for i in range(1, row):
for j in range(1, col):
res[i][j] = min(res[i-1][j], res[i][j-1]) + grid[i][j]
return res[-1][-1]