Leetcode64. 最小路径和(经典dp)
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode64. 最小路径和(经典dp)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/minimum-path-sum/
解题思路
对于点 d p [ m , n ] dp[m, n] dp[m,n]到他的最短路径 m i n ( d p [ m − 1 , n ] , d p [ m , n − 1 ] ) min(dp[m - 1, n], dp[m, n - 1]) min(dp[m−1,n],dp[m,n−1]),由于只能向下或者向右走,所以上边界和左边由于只有一个路径可以到。
代码
class Solution {
public int minPathSum(int[][] grid) {
int[][] dp = new int[grid.length][grid[0].length];
dp[0][0] = grid[0][0]; //初始化
for(int i = 1; i < grid[0].length; i++) //上边界初始化
dp[0][i] = grid[0][i] + dp[0][i - 1];
for(int i = 1; i < grid.length; i++) //左边界初始化
dp[i][0] = grid[i][0] + dp[i - 1][0];
for(int i = 1; i < grid.length; i++) //对于点dp[m, n]到他的最短路径min(dp[m - 1, n], dp[m, n - 1])
for(int j = 1; j < grid[0].length; j++)
dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];
return dp[grid.length - 1][grid[0].length - 1];
}
}
复杂度分析
- 时间复杂度: O ( n ∗ m ) O(n * m) O(n∗m)
- 空间复杂度: O ( n ∗ m ) O(n * m) O(n∗m)
以上是关于Leetcode64. 最小路径和(经典dp)的主要内容,如果未能解决你的问题,请参考以下文章