leetcode_120. Triangle
2017-04-30 11:27
232 查看
题目:
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
The minimum path sum from top to bottom is
11).
动态规划问题。从下到上,每个数的最短路径都是到下面两个数的最短路径+这个数。即min(minm[i], minm[i+1])+triangle[row][i];
从下到上,第一层得到的就是到第2层的最短路的最小值加第一层的数。
代码如下:
class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
int rows = triangle.size();
vector<int>minm = triangle[triangle.size()-1];
for(int row = rows - 2; row >= 0; --row){
for(int i = 0; i <= row; ++i){
minm[i] = min(minm[i], minm[i+1])+triangle[row][i];
}
}
return minm[0];
}
};
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).
动态规划问题。从下到上,每个数的最短路径都是到下面两个数的最短路径+这个数。即min(minm[i], minm[i+1])+triangle[row][i];
从下到上,第一层得到的就是到第2层的最短路的最小值加第一层的数。
代码如下:
class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
int rows = triangle.size();
vector<int>minm = triangle[triangle.size()-1];
for(int row = rows - 2; row >= 0; --row){
for(int i = 0; i <= row; ++i){
minm[i] = min(minm[i], minm[i+1])+triangle[row][i];
}
}
return minm[0];
}
};
相关文章推荐
- (DP)LeetCode#120. Triangle
- Leetcode 120. Triangle (Medium) (cpp)
- 【LeetCode】120. Triangle (3 solutions)
- leetcode 120. Triangle
- LeetCode 120. Triangle
- [leetcode] 120. Triangle
- leetcode-120. Triangle
- LeetCode 120. Triangle
- LeetCode解题报告 120. Triangle [medium]
- leetcode-120. Triangle
- LeetCode 120. Triangle
- <LeetCode OJ> 120. Triangle
- [LeetCode]120. Triangle
- 120. Triangle【M】【95】【leetcode】
- 【LeetCode】120. Triangle
- Leetcode 120. Triangle
- leetcode 120. Triangle
- [LeetCode] 120. Triangle
- LeetCode#120. Triangle
- [Leetcode] 120. Triangle