64. 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.
本题和triangle比较相似,只不过从三角形变成了矩形,但是方法还是一样的,同样是用dp解决,代码如下:
1 public class Solution { 2 public int minPathSum(int[][] grid) { 3 if(grid==null||grid.length==0||grid[0].length==0) return 0; 4 int m = grid.length; 5 int n =grid[0].length; 6 int[][] dp = new int[m][n]; 7 dp[0][0] = grid[0][0]; 8 for(int i=1;i<m;i++){ 9 dp[i][0] = dp[i-1][0]+grid[i][0]; 10 } 11 for(int i=1;i<n;i++){ 12 dp[0][i] = dp[0][i-1]+grid[0][i]; 13 } 14 for(int i=1;i<m;i++){ 15 for(int j=1;j<n;j++){ 16 dp[i][j] =grid[i][j]+Math.min(dp[i][j-1],dp[i-1][j]); 17 } 18 } 19 return dp[m-1][n-1]; 20 } 21 }