leetcode oj java 64. Minimum Path Sum
来源:互联网 发布:php编程第3版pdf 编辑:程序博客网 时间:2024/06/05 04:25
一、问题描述:
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.
二、解决思路:
递归,每次向右或者向下, min(向右,向下)。
三、代码:
递归:
public class Solution { public static int minPathSum(int[][] grid, int x, int y) { int m = grid.length; int n = grid[0].length; int sum = 0; if (x == m - 1) { for (int i = y; i < n; i++) { sum += grid[m - 1][i]; } return sum; } if (y == n - 1) { for (int i = x; i < m; i++) { sum += grid[i][n - 1]; } return sum; } sum = grid[x][y]; int right = minPathSum(grid, x, y + 1); int down = minPathSum(grid, x + 1, y); return sum + Math.min(right, down); } public int minPathSum(int[][] grid) { return minPathSum(grid, 0, 0); }}TL了,所以考虑用数组result[m][n]来存放到每个位置的时候的路径和的最小值,这样就不需要重复计算已经遍历到的位置了。初始化第一行和第一列,遍历整个数组,每个位置的最小值是
result[i][j] = Math.min(result[i - 1][j], result[i][j - 1]) + grid[i][j];
代码:
public class Solution { public int minPathSum(int[][] grid) { int sum = 0; int m = grid.length; if (m == 0) { return 0; } int n = grid[0].length; if (n == 1) { for (int i = 0; i < m; i++) { sum += grid[i][0]; } return sum; } if (m == 1) { for (int i = 0; i < n; i++) { sum += grid[0][i]; } return sum; } int[][] result = new int[m][n]; result[0][0] = grid[0][0]; // 第一行: int tmp = result[0][0]; for (int i = 1; i < n; i++) { result[0][i] = tmp + grid[0][i]; tmp += grid[0][i]; } // 第一列: tmp = result[0][0]; for (int i = 1; i < m; i++) { result[i][0] = tmp + grid[i][0]; tmp += grid[i][0]; } for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { result[i][j] = Math.min(result[i - 1][j], result[i][j - 1]) + grid[i][j]; } } return result[m - 1][n - 1]; }}
0 0
- leetcode oj java 64. Minimum Path Sum
- <LeetCode OJ> 64. Minimum Path Sum
- LeetCode OJ-64.Minimum Path Sum(DP)
- LeetCode OJ:Minimum Path Sum
- LeetCode OJ - Minimum Path Sum
- LeetCode OJ Minimum Path Sum
- (Java)LeetCode-64. Minimum Path Sum
- Leetcode 64. Minimum Path Sum (Medium) (java)
- 【leetcode】64. Minimum Path Sum【java】
- [leetcode]64. Minimum Path Sum(Java)
- [Leetcode] Minimum Path Sum (Java)
- [LeetCode][Java] Minimum Path Sum
- [LeetCode][Java] Minimum Path Sum
- [LeetCode]64.Minimum Path Sum
- LeetCode --- 64. Minimum Path Sum
- LeetCode 64.Minimum Path Sum
- [Leetcode] 64. Minimum Path Sum
- [leetcode] 64.Minimum Path Sum
- Net设计模式实例之单例模式( Singleton Pattern)
- 【Leetcode】445. Add Two Numbers II
- Net设计模式实例之原型模式( Prototype Pattern)
- wxpython核心部件wx.combobox用法示例
- NERDCOMMENTER[快速注释]
- leetcode oj java 64. Minimum Path Sum
- Net设计模式实例之建造者模式(Builder Pattern)
- 技能包!Linux 下清空或删除大文件内容的 5 种方法
- Android-->Toast全屏和动画(模拟QQ样式)
- python数据持久存储:pickle模块的基本使用
- 数据结构与算法-02线性表-01
- Git版本控制工具使用教程(一)
- 织梦CMS 模板常用标记调用笔记
- 程序员的艰难道路