题目链接:minimum-path-sum
/**
*
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.
*
*/
public class MinimumPathSum {
// 61 / 61 test cases passed.
// Status: Accepted
// Runtime: 210 ms
// Submitted: 0 minutes ago
public int minPathSum(int[][] grid) {
int m = grid.length;
if(m == 0) return Integer.MAX_VALUE;
int n = grid[0].length;
for(int i = n - 2; i >= 0; i --) {
grid[m - 1][i] += grid[m - 1][i + 1];
}
for(int i = m - 2; i >= 0; i --) {
grid[i][n - 1] += grid[i][n - 1];
}
for(int i = m - 2; i >= 0; i--)
for(int j = n - 2; j >= 0; j --) {
grid[i][j] += Math.min(grid[i][j + 1], grid[i + 1][j]);
}
return grid[0][0];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}