1 题目
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例 1:
输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
2 解析
用一个一位数组来存储每一行到最右下角的最小路径总和,一行存储一个值。
最后返回最后一个元素就是最小路径目标值
3 Python实现
class Solution:
def minPathSum(self, grid: List[List[int]]) -> int:
dp = [float('inf')]*(len(grid[0])+1)
dp[1] = 0
for row in grid:
for idx,num in enumerate(row):
dp[idx+1] = min(dp[idx],dp[idx+1])+num
return dp[-1]