leetcode--Minimum Path Sum
2017-08-08 11:04
441 查看
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right whichminimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
题意:给定m*n矩阵,里面都是非负数,求从左上角,走到右下角的路径,要求这条路径过程中所有数加起来的和最小
分类:数组,动态规划
解法1:显然是动态规划,保留上次的状态,对于每一个位置(i,j)
从左上角到这个位置的最小和,由(i-1,j)和(i,j-1)决定
[java] view
plain copy
public class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
int[][] flag = new int[m]
;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(i==0&&j==0) flag[0][0] = grid[0][0];
else if(i==0) flag[i][j] = flag[0][j-1]+grid[i][j];
else if(j==0) flag[i][j] = flag[i-1][0]+grid[i][j];
else flag[i][j] = Math.min(flag[i-1][j],flag[i][j-1])+grid[i][j];
}
}
return flag[m-1][n-1];
}
}
[java] view
plain copy
public class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
int[][] flag = new int[m]
;
for(int i=m-1;i>=0;i--){
for(int j=n-1;j>=0;j--){
if(i==m-1&&j==n-1){
flag[i][j] = grid[m-1][n-1];
}else if(i==m-1){
flag[i][j] = flag[i][j+1]+grid[i][j];
}else if(j==n-1){
flag[i][j] = flag[i+1][j]+grid[i][j];
}else{
flag[i][j] = Math.min(flag[i+1][j],flag[i][j+1])+grid[i][j];
}
}
}
return flag[0][0];
}
}
原文链接http://blog.csdn.net/crazy__chen/article/details/46409705
Note: You can only move either down or right at any point in time.
题意:给定m*n矩阵,里面都是非负数,求从左上角,走到右下角的路径,要求这条路径过程中所有数加起来的和最小
分类:数组,动态规划
解法1:显然是动态规划,保留上次的状态,对于每一个位置(i,j)
从左上角到这个位置的最小和,由(i-1,j)和(i,j-1)决定
[java] view
plain copy
public class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
int[][] flag = new int[m]
;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(i==0&&j==0) flag[0][0] = grid[0][0];
else if(i==0) flag[i][j] = flag[0][j-1]+grid[i][j];
else if(j==0) flag[i][j] = flag[i-1][0]+grid[i][j];
else flag[i][j] = Math.min(flag[i-1][j],flag[i][j-1])+grid[i][j];
}
}
return flag[m-1][n-1];
}
}
[java] view
plain copy
public class Solution {
public int minPathSum(int[][] grid) {
int m = grid.length;
int n = grid[0].length;
int[][] flag = new int[m]
;
for(int i=m-1;i>=0;i--){
for(int j=n-1;j>=0;j--){
if(i==m-1&&j==n-1){
flag[i][j] = grid[m-1][n-1];
}else if(i==m-1){
flag[i][j] = flag[i][j+1]+grid[i][j];
}else if(j==n-1){
flag[i][j] = flag[i+1][j]+grid[i][j];
}else{
flag[i][j] = Math.min(flag[i+1][j],flag[i][j+1])+grid[i][j];
}
}
}
return flag[0][0];
}
}
原文链接http://blog.csdn.net/crazy__chen/article/details/46409705
相关文章推荐
- Minimum Path Sum leetcode 64
- LeetCode: Minimum Path Sum
- LeetCode (Minimum Path Sum)
- LeetCode - Minimum Path Sum
- 【leetcode】Array—— Minimum Path Sum(64)
- [Leetcode] Minimum Path Sum
- 【LeetCode】Minimum Path Sum
- LeetCode: Unique Paths I & II & Minimum Path Sum
- 【LeetCode】Minimum Path Sum
- [leetcode]Minimum Path Sum
- LeetCode "Minimum Path Sum" - 2D DP
- LeetCode Minimum Path Sum
- leetcode: Minimum Path Sum
- leetcode_c++:Minimum Path Sum (064)
- [leetcode]Minimum Path Sum
- [Leetcode] Minimum Path Sum
- LeetCode Minimum Path Sum(动态规划)
- leetcode minimum path sum
- [LeetCode56]Minimum Path Sum
- 【leetcode】Minimum Path Sum