LeetCode 120. Triangle
2017-05-10 14:39
204 查看
120. 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
[
[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).
Analysis
这道题的意思是找到从顶到底的最小路径和,条件是只能跳到下一层的相邻两个顶点上。
我采用的做法是从低到顶,不难得到triangle[i][j] += min(triangle[i+1][j],triangle[i+1][j+1]);
即到达某一层的某一个点到底的最小路径和,实则上是点的权加上它下一层的相邻两个点的最小路径和之间的最小值。
最后返回triangle[0][0]即可。
Code
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
[
[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).
Analysis
这道题的意思是找到从顶到底的最小路径和,条件是只能跳到下一层的相邻两个顶点上。
我采用的做法是从低到顶,不难得到triangle[i][j] += min(triangle[i+1][j],triangle[i+1][j+1]);
即到达某一层的某一个点到底的最小路径和,实则上是点的权加上它下一层的相邻两个点的最小路径和之间的最小值。
最后返回triangle[0][0]即可。
Code
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { for(int i = triangle.size()-2 ; i >=0 ;--i){ for(int j = 0; j < i+1; ++j){ int temp = min(triangle[i+1][j],triangle[i+1][j+1]); triangle[i][j] += temp; } } return triangle[0][0]; } };
相关文章推荐
- Leetcode 120. Triangle
- leetcode 120. Triangle
- leetcode120. Triangle
- LeetCode 120. Triangle
- leetcode 120. Triangle
- LeetCode120. Triangle
- 【LeetCode】120. Triangle 基于C++和Java的分析及解法,动态规划
- LeetCode *** 120. Triangle
- LeetCode 120. Triangle (Python)最优解--Apolo_Shane
- Leetcode 120. Triangle
- LeetCode 120. Triangle
- [leetcode]120. Triangle
- leetcode题解-120. Triangle
- 【LeetCode】120. Triangle
- [LeetCode] 120. Triangle
- [leetcode] 120. Triangle
- Leetcode-120. Triangle
- [leetcode]120. Triangle
- 第十四周:[leetCode] 120. Triangle
- LeetCode 120. Triangle