题目描述
给定一个包含非负整数的 m x n 网格 grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明: 每次只能向下或者向右移动一步。
示例
示例 1:
1 | 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] |
示例 2:
1 | 输入:grid = [[1,2,3],[4,5,6]] |
提示
m == grid.lengthn == grid[i].length1 <= m, n <= 2000 <= grid[i][j] <= 200
解题思路
使用动态规划,定义 dp[i][j] 表示到达位置 (i,j) 的最小路径和。
由于只能向右或向下移动,状态转移方程为:
$$
dp[i][j] = \min(dp[i-1][j], dp[i][j-1]) + grid[i][j]
$$
边界情况:
- 第一行只能从左边来:
dp[0][j] = dp[0][j-1] + grid[0][j] - 第一列只能从上面来:
dp[i][0] = dp[i-1][0] + grid[i][0]
代码实现
1 | class Solution: |