和之前的Unique Path大体一样,不同的就是动态规划flag[i][j]代表的是到该点的最短距离而不是可能路径数。 这个值相当于改点的值加上min(flag[i][j-1],flag[i-1][j])。
public class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
if(m==0)
{
return 0;
}
int n = grid[0].length;
if(n==0)
{
return 0;
}
for(int i=0;i<m;i++ )
{
for(int j=0;j<n;j++ )
{
if(i==0&&j==0)
{
continue;
}
if(i==0)
{
grid[i][j] += grid[i][j-1];
}
else if(j==0)
{
grid[i][j] += grid[i-1][j];
}
else
{
grid[i][j] += Math.min(grid[i-1][j],grid[i][j-1]);
}
}
}
return grid[m-1][n-1];
}
}