64. Minimum Path Sum--找路径最小和
来源:互联网 发布:ppt转pdf软件在线 编辑:程序博客网 时间:2024/06/06 01:16
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.
给一个m*n的格子,其中每个小格子都填充了非负的数,找一条从左上角向右下角的路径,使这条路径上所有数的和最小。注意:每次只能向下或者向右移动。
分析:因为遍历完所有路径开销太大,所以采用动态规划的方法,让每个小格子里的数字都更新为从左上角到此格子路径最小和,这样更新完毕后右下角的数字就是最小路径和,对于第一行,要到达这些小格子只能是从左上角向右移动,对于第一列,要到达这些小格子也只能是从左上角向下移动,而对于其余的小格子,更新数字时,需要判断与它左边的数字和它上边的数字哪个更小,然后与之相加即可。这样每个小格子中的数字都是前面路径的最小和。
代码如下:
int m = grid.length; int n = grid[0].length; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(i==0&&j==0){grid[i][j]=grid[i][j];} else if(i==0&&j!=0){grid[i][j]=grid[i][j]+grid[i][j-1];} else if(i!=0&&j==0){grid[i][j]=grid[i-1][j]+grid[i][j];} else{grid[i][j] = Math.min(grid[i][j-1],grid[i-1][j])+grid[i][j];} System.out.println(grid[i][j]); } } return grid[m-1][n-1];
把代码改成下面的形式之后,效率有所提高,可能是少了判断和查询的时间?
for(int i=0;i<grid.length;i++){ for(int j=0;j<grid[0].length;j++){ if(i==0&&j==0)continue; else if(i==0){grid[i][j]=grid[i][j]+grid[i][j-1];} else if(j==0){grid[i][j]=grid[i-1][j]+grid[i][j];} else{grid[i][j] = Math.min(grid[i][j-1],grid[i-1][j])+grid[i][j];} //System.out.println(grid[i][j]); } } return grid[grid.length-1][grid[0].length-1];
阅读全文
0 0
- 64. Minimum Path Sum--找路径最小和
- Minimum Path Sum 最小路径和
- [leetcode]Minimum Path Sum 最小路径和
- Leetcode:Minimum Path Sum 最小路径和
- LinCode Minimum Path Sum 最小路径和
- leetcode64-Minimum Path Sum(最小路径和)
- lintcode minimum-path-sum 最小路径和
- 最小路径和—Minimum Path Sum
- Leetcode 64. Minimum Path Sum 最小路径和 解题报告
- LeetCode 64. Minimum Path Sum(最小路径和)
- leetcode 64. Minimum Path Sum-最小路径和|动态规划
- 64. Minimum Path Sum 路径最小总和
- LeetCode | Minimum Path Sum(最小路径和)
- LeetCode OJ 之 Minimum Path Sum (最小路径和)
- 动态规划--最小路径和(Minimum Path Sum)
- Minimum Path Sum'二维数组最小路径和
- 110.Minimum Path Sum-最小路径和(容易题)
- Minimum Path Sum最小路径和算法详解
- 禁用myeclipse updating indexes
- watchdog杀死system_server导致系统重启问题分析流程
- android 添加到购物车动画
- css04小知识点
- P、*P和&P三者的区别
- 64. Minimum Path Sum--找路径最小和
- ECharts+Ajax动态制图
- Linux基础(一)(2)简单shell命令
- CI中的site_url和base_url的自我总结
- RecyclerView的使用
- OpenCV学习--Mat::rowRange函数
- 二叉树的非递归遍历
- HTTP请求的知识点
- C#多线程介绍及编程