[LeetCode]-Triangle 求三角形中从顶到底最短距离
来源:互联网 发布:淘宝一键抢拍神器 编辑:程序博客网 时间:2024/05/18 13:30
Triangle
iven a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.
For example, given the following triangle
[ [2], [3,4], [6,5,7], [4,1,8,3]]
The minimum path sum from top to bottom is 11
(i.e., 2 + 3 + 5 + 1 = 11).
Note:
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
分析:可以将问题分解考虑,从低至顶的分析方法。
设状态f[i][j],表示点(i,j)到顶部的距离,则f[i][j]=min(f[i-1][j-1],f[i-1][j])+(i,j),当然最左和最右端的计算方式稍有变化。最后找出最小值即可。
采用滚动数组的方式,由于下层只和上层有关系,所以只需要记录上层的信息即可,这样就把O(n^2)的空间复杂度压缩成了O(n)。
class Solution {public: int minimumTotal(vector<vector<int> > &triangle) { int n=triangle.size(); vector<int> f(n); f[0]=triangle[0][0]; for(int i=1;i<n;i++){ for(int j=triangle[i].size()-1;j>=0;j--){ int mn; if(j==0){ mn=f[j]; } if(j==i){ mn=f[j-1]; } else{ mn=min(f[j-1],f[j]); } f[j]=mn+triangle[i][j]; } } int min_sum=f[0]; for(int i=1;i<n;i++) if(min_sum>f[i])min_sum=f[i]; return min_sum; }};
0 0
- [LeetCode]-Triangle 求三角形中从顶到底最短距离
- Triangle 三角形从顶到底的最短路径
- triangle- 求从顶向下的三角形的最小路径和问题
- Triangle 三角形求最小路径和 @LeetCode
- Triangle 三角形求最小路径和 @leetcode
- 求数组中元素的最短距离
- leetcode之Triangle(三角形的最短路径)
- [LeetCode]Triangle三角形
- Leetcode:Triangle 数字三角形
- leetcode:Triangle 三角形
- 求两地的最短距离
- 迪杰斯特拉算法求最短距离
- 求两点间最短距离
- Dijkstra算法求最短距离
- 求球面两点最短距离
- (hdu step 6.2.1)最短路(求从a点到b点的最短距离)
- (java)百度笔试之:求从某一点开始遍历所有点的最短距离
- LeetCode 120. Triangle(三角形)
- BNU 16485 Build The Electric System
- eclipse JVM 设置
- 获取一个数组最大的k个数
- 怎样使用video和video的常见属性
- iOS设计模式之Target-Action
- [LeetCode]-Triangle 求三角形中从顶到底最短距离
- 步科ET070不能启动
- Facebook's std::vector optimization
- 【Android】gradle使用过程的问题解决汇总
- Codeforces #264 (Div. 2) D. Gargari and Permutations(动态规划:简单)
- IE6兼容性问题及IE6常见bug详细汇总
- Android开发————布局参数的详解
- java.lang.VerifyError解决方案
- .NET应用架构设计—适当使用活动记录模式代替领域模型模式