[leetcode]120. Triangle
2017-05-27 12:06
435 查看
题目链接:https://leetcode.com/problems/triangle/#/description
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).
方法一:(自底向上)
class Solution {
public:
int minimumTotal(vector<vector<int> > &triangle)
{
vector<int> mini = triangle[triangle.size()-1];
for ( int i = triangle.size() - 2; i>= 0 ; --i )
for ( int j = 0; j < triangle[i].size() ; ++ j )
mini[j] = triangle[i][j] + min(mini[j],mini[j+1]);
return mini[0];
}
};
方法二:(自顶向下)
class Solution{
public:
int minimumTotal(vector<vector<int>>& triangle)
{
vector<vector<int>> minilen=vector<vector<int>>(triangle.size());
for(int i=0;i<triangle.size();i++)
minilen[i].resize(triangle[i].size());
minilen[0][0]=triangle[0][0];
for(int i=1;i<triangle.size();i++)
{
for(int j=0;j<triangle[i].size();j++)
{
if(j==0)
minilen[i][j]=minilen[i-1][j]+triangle[i][j];
else if(j==triangle[i].size()-1)
minilen[i][j]=minilen[i-1][j-1]+triangle[i][j];
else
minilen[i][j]=min(minilen[i-1][j-1],minilen[i-1][j])+triangle[i][j];
}
}
int minres=INT32_MAX;
for(int i=0;i<minilen.back().size();i++)
{
if (minilen.back()[i]<minres)
minres=minilen.back()[i];
}
return minres;
}
};
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).
方法一:(自底向上)
class Solution {
public:
int minimumTotal(vector<vector<int> > &triangle)
{
vector<int> mini = triangle[triangle.size()-1];
for ( int i = triangle.size() - 2; i>= 0 ; --i )
for ( int j = 0; j < triangle[i].size() ; ++ j )
mini[j] = triangle[i][j] + min(mini[j],mini[j+1]);
return mini[0];
}
};
方法二:(自顶向下)
class Solution{
public:
int minimumTotal(vector<vector<int>>& triangle)
{
vector<vector<int>> minilen=vector<vector<int>>(triangle.size());
for(int i=0;i<triangle.size();i++)
minilen[i].resize(triangle[i].size());
minilen[0][0]=triangle[0][0];
for(int i=1;i<triangle.size();i++)
{
for(int j=0;j<triangle[i].size();j++)
{
if(j==0)
minilen[i][j]=minilen[i-1][j]+triangle[i][j];
else if(j==triangle[i].size()-1)
minilen[i][j]=minilen[i-1][j-1]+triangle[i][j];
else
minilen[i][j]=min(minilen[i-1][j-1],minilen[i-1][j])+triangle[i][j];
}
}
int minres=INT32_MAX;
for(int i=0;i<minilen.back().size();i++)
{
if (minilen.back()[i]<minres)
minres=minilen.back()[i];
}
return minres;
}
};
相关文章推荐
- [LeetCode] 120. Triangle
- LeetCode#120. Triangle
- Leetcode 120. Triangle
- LeetCode-120. Triangle
- leetcode 120. Triangle
- leetcode @python 120. Triangle
- Leetcode-120. Triangle
- LeetCode 120. Triangle 动态规划
- LeetCode 120. Triangle
- leetcode 120. Triangle
- LeetCode 120. Triangle 动态规划
- LeetCode - 120. Triangle - 思路详解 - C++
- LeetCode 120. Triangle 题解
- [LeetCode]120. Triangle
- LeetCode 120. Triangle
- LeetCode 120. Triangle (三角形)
- 【LeetCode】120. Triangle (3 solutions)
- LeetCode 120. Triangle
- Leetcode-120. Triangle
- leetCode刷题归纳-Dynamic Programming(120. Triangle)