原题:
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
题意:和前两题类似,选取路径最短的那一条
代码和思路:
class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
//处理第一行
if(i==0 && j !=0){
grid[i][j] += grid[i][j-1];
}
//处理第一列
else if(j==0 && i!=0){
grid[i][j] += grid[i-1][j];
}
//起始点
else if(i==0 && j==0){
grid[i][j] = grid[i][j];
}
//因为路径可以从 左 和 上 过来。所以选取最小的那一条
else{
grid[i][j] += Math.min(grid[i-1][j],grid[i][j-1]);
}
}
}
return grid[m-1][n-1];
}
}