https://leetcode-cn.com/problems/minimum-path-sum/
idea
和三角形最小路径和类似 常规dp
首先 根据边界条件 直接可以确定第一行和第一列的最小路径
然后 依次遍历二维数组的每行
根据
即可轻松求解
遍历每i行的时候 第i-2行的数据没有意义 因此可以优化空间复杂度,这里没有做优化
Code
public static int minPathSum(int[][] grid) {int result=0;int m=grid.length; //m行int n=grid[0].length; //n列int[][] dp=new int[m][n];int sum=0;for(int i=0;i<m;i++){sum+=grid[i][0];dp[i][0]=sum;}sum=0;for(int i=0;i<n;i++) {sum += grid[0][i];dp[0][i] = sum;}for(int i=1;i<m;i++)for(int j=1;j<n;j++){if(dp[i][j-1]>dp[i-1][j]){dp[i][j]=dp[i-1][j]+grid[i][j];}elsedp[i][j]=dp[i][j-1]+grid[i][j];}return dp[m-1][n-1];}
