您的位置:首页 > 职场人生

LeetCode 064 Minimum Path Sum

2014-08-07 10:07 507 查看
题目

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.

思路

 很典型的DP题目,先把问题化为子问题。最后一个点的最短路径,只可能从上面或者左边过来,那么只要求得到上面那个点最短路径和最左边那个点的最短路径即可。然后把子问题推广到每个点,就是把子问题递归。最后再用备忘录的方法,由最右上的点开始遍历。

代码

 
public class Solution {
public int minPathSum(int[][] grid) {
int row = grid.length;
if(row==0){
return 0;
}
int col = grid[0].length;
for(int i=1;i<row;i++){
grid[i][0]+=grid[i-1][0];
}
for(int j=1;j<col;j++){
grid[0][j]+=grid[0][j-1];
}
for(int i=1;i<row;i++){
for(int j=1;j<col;j++){
grid[i][j]+=Math.min(grid[i-1][j],grid[i][j-1]);
}
}
return grid[row-1][col-1];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 面试笔试