leetcode--minimum_path_sum
2016-11-19 23:12
302 查看
题意: 给定一个由非负整数填满的m×n的网格,查找一条从左上方到右下方的路径,使得这条路径中所有数之和最小,只能向有或者向下走。
分析: 本题有点类似于这道题,只是需要修改下递推公式。设i, j为二维数组的坐标。
minPathSum(i,j)=⎧⎩⎨⎪⎪min(minPathSum(i+1,j)minPathSum(i,j+1))+grid(i,j)minPathSum(i+1,j)+grid(i,j)x(i,j+1)if i≤m−2 and j≤n−2if i≤m−2 and j=n−1if i=m−1 and j≤n−2
代码(递归,会超时,放在这儿便于理解)
代码 (迭代)
源程序下载
分析: 本题有点类似于这道题,只是需要修改下递推公式。设i, j为二维数组的坐标。
minPathSum(i,j)=⎧⎩⎨⎪⎪min(minPathSum(i+1,j)minPathSum(i,j+1))+grid(i,j)minPathSum(i+1,j)+grid(i,j)x(i,j+1)if i≤m−2 and j≤n−2if i≤m−2 and j=n−1if i=m−1 and j≤n−2
代码(递归,会超时,放在这儿便于理解)
public int minPathSum(int[][] grid) { return minPartitionSum(grid, 0, 0); } public int minPartitionSum(int[][] grid, int i, int j){ if(i == grid.length - 1 && j == grid[0].length - 1){ return grid[i][j]; }else if(i == grid.length - 1){ return grid[i][j] + minPartitionSum(grid, i, j + 1); }else if(j == grid[0].length - 1){ return grid[i][j] + minPartitionSum(grid, i + 1, j); }else{ return Math.min(minPartitionSum(grid, i + 1, j), minPartitionSum(grid, i, j + 1)) + grid[i][j]; } }
代码 (迭代)
public int minPathSum(int[][] grid){ int m = grid.length; int n = grid[0].length; int[][] pathSum = new int[m] ; pathSum[m - 1][n - 1] = grid[m - 1][n - 1]; for(int i = m - 2; i >= 0; i--){ //将最后一列先赋值 pathSum[i][n - 1] = grid[i][n - 1] + pathSum[i + 1][n - 1]; } for(int j = n - 2; j >= 0; j--){ //将最后一行先赋值 pathSum[m - 1][j] += grid[m - 1][j] + pathSum[m - 1][j + 1]; } for(int i = m - 2; i >= 0; i--){ for(int j = n - 2; j >= 0; j--){ pathSum[i][j] = grid[i][j] + Math.min(pathSum[i + 1][j], pathSum[i][j + 1]); } } return pathSum[0][0]; }
源程序下载
相关文章推荐
- [LeetCode]Minimum Path Sum
- [LeetCode] Minimum Path Sum
- [LeetCode] Minimum Path Sum
- Leetcode: Unique Path I & II, Minimum Path Sum, Triangle
- leetcode 64: Minimum Path Sum
- [LeetCode]Minimum Path Sum
- leetcode -- Minimum Path Sum -- 简单DP
- Minimum Path Sum - LeetCode
- [Leetcode] Minimum Path Sum
- LeetCode: Minimum Path Sum 解题报告
- leetcode---Minimum Path Sum
- [LeetCode] 057: Minimum Path Sum
- [leetcode64]Minimum Path Sum
- LeetCode - Minimum Path Sum
- LeetCode || Minimum Path Sum
- [leetcode] Minimum Path Sum
- LeetCode: Minimum Path Sum
- 【leetcode】Minimum Path Sum
- Leetcode-Minimum Path Sum
- 【LeetCode】Minimum Path Sum