题目链接
英文链接:https://leetcode.com/problems/minimum-path-sum/
中文链接:https://leetcode-cn.com/problems/minimum-path-sum/
题目详述
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例:
1 | 输入: |
题目详解
典型的动态规划。
- 设
dp[i][j]
为 下标 (0, 0) 到下标 (i, j) 的路径上的数字和。 - 状态转移方程为
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j] (i > 0, j > 0)
; - 显然,左上角那个元素的路径数字和就是本身数字,第一行是相邻左边的路径数字和加上自身数字,第一列是相邻上边的路径数字和加上自身数字。
1 | public class LeetCode_00064 { |
可以单独计算第一行和第一列,避免大量的 if/else 判断。
1 | public class LeetCode_00064 { |