给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。
注意事项
你在同一时间只能向下或者向右移动一步
这道题和之前做的一道三角形的动态规划差不多,但是更难一些,
例
a b c
d e f
g h i
如果要到i就必须从f 或h走,只要选出其中较小的即可,再用递归算出走每一个格的最小数即可,但第一行第一列特殊处理
class Solution:
"""
@param: grid: a list of lists of integers
@return: An integer, minimizes the sum of all numbers along its path
"""
def minPathSum(self, grid):
l1 = len(grid)
l2 = len(grid[0])
for i in range(1,l1):
grid[0][i] += grid[0][i - 1]
for j in range(1,l2):
grid[j][0] += grid[j - 1][0]
for i in range(1,l1):
for j in range(1,l2):
grid[i][j] += min(grid[i - 1][j],grid[i][j - 1])
return grid[l1 - 1][l2 -1]
3249

被折叠的 条评论
为什么被折叠?



