[Array]Triangle
来源:互联网 发布:网络诈骗多少钱才算 编辑:程序博客网 时间:2024/06/15 23:10
Given 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.
方法1:从上向下进行遍历dp,但是这样写的代码比较繁琐。
class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { if(triangle.size() == 0||triangle[0].size()==0) return 0 ; int* buffer = new int[triangle[triangle.size() - 1].size()]; buffer[0] = triangle[0][0]; for(int row = 1 ; row < triangle.size(); ++row){ for(int col = triangle[row].size() - 1; col >= 0; --col){ if(col == triangle[row].size() - 1){ buffer[col] = buffer[col - 1]+ triangle[row][col]; } else if(col == 0){ buffer[col] = buffer[col] + triangle[row][col]; } else{ buffer[col] = min(buffer[col-1],buffer[col]) + triangle[row][col]; } } } int sum = INT_MAX; for(int i = 0 ; i < triangle[triangle.size() - 1].size(); ++i){ if(sum > buffer[i]) sum = buffer[i]; } return sum; }};
方法2:从下向上进行遍历dp,这样的代码相对从上到下而言比较简洁。
class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { if(triangle.size() == 0) return 0; vector<int> res = triangle[triangle.size()-1]; for(int row = triangle.size() - 2; row >=0; --row){ for(int col = 0; col < triangle[row].size(); ++col){ res[col] = triangle[row][col]+min(res[col],res[col+1]); } } return res[0]; }};
阅读全文
0 0
- [Array]Triangle
- Triangle Array Problem
- Array Pascal's Triangle
- [Array] Pascal's Triangle
- LeetCode刷题【Array】 Triangle
- LeetCode[Array]: Pascal's Triangle
- [leetcode][array] Pascal's Triangle
- Array Pascal's Triangle II
- [Array]Pascal's Triangle II
- LeetCode[Array]: Pascal's Triangle II
- [leetcode][array] Pascal's Triangle II
- 【leetcode】Array——Triangle(120)
- leetcode118 & 119. [Array]Pascal's Triangle
- leetcode 118 Pascal's Triangle(array)
- leetcode 119 Pascal's Triangle II(array)
- LeetCode-Array-118. Pascal's Triangle
- LeetCode-Array-119. Pascal's Triangle II
- Array----- 120. Triangle(计算路径最小和)
- 隐马尔科夫模型(Hidden Markov Model,HMM)
- C语言 结构体指针需要申请内存但函数定义指针不需要申请
- 数据结构实验之栈七:出栈序列判定
- Java知识点总结
- 数据分页显示
- [Array]Triangle
- A Bug's Life(POJ-2492)
- mysql-python 安装错误 fatal error C1083: Cannot open include file: 'config-win.h': No such file or direc
- hdu 1029 Ignatius and the Princess IV(水题)
- 继承
- select模式的IO的事件通知一定是准确的吗?
- ViewFlipper-----AdapterViewFlipper公告栏
- JavaScript解构赋值(代码说明ES6数组, 对象, 函数的解构赋值)
- a标签href属性值javascript:void(0);与#的区别