文章目录
64. 矩阵的最小路径和
题目大意
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
解题思路
题目要求,只能向下走或者向右走,所以对于当前单元格(i,j)
,他不是从左侧单元格(i-1,j)
移动而来就是在上侧单元格(i-1,j)
走来,所以可以建立转移方程:
dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j]
但是要特殊处理几个特殊位置:
当上边是矩阵边界的时候,只能从左侧走过来;当左侧是矩阵边界的时候,只能上侧走来;还有一个特殊位置,就是起点的位置。
该题中我们完全不用建立dp
数组来记录从而浪费了额外的空间,直接对原矩阵grid
进行修改即可,原矩阵元素可以直接被覆盖,因为不会再被使用了。
代码实现
class Solution {
public int minPathSum(int[][] grid) {
if(grid==null||grid.length==0||grid[0].length==0