题目:
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
思路:动态规划
具体:构建二维数组,存到该位置的最小路径和
代码:
class Solution(object):
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
helper = [grid[0]]
for i in range(1, len(grid[0])):
helper[0][i] += helper[0][i-1]
for i in range(1, len(grid)):
helper.append([helper[i-1][0]+grid[i][0]])
for j in range(1, len(grid[0])):
helper[i].append(grid[i][j]+min(helper[i][j-1],helper[i-1][j]))
return helper[len(grid)-1][len(grid[0])-1]