Leetcode 120. Triangle
2018-01-26 11:27
309 查看
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { int n = triangle.size(); if (n == 0) return 0; if (n == 1) return triangle[0][0]; vector<int> dp(n, 0); dp[0] = triangle[0][0]; for (int i = 1; i != n; ++i) { dp[i] = dp[i - 1] + triangle[i][i]; for (int j = i - 1; j != 0; --j) { dp[j] = min(dp[j], dp[j - 1]) + triangle[i][j]; } dp[0] += triangle[i][0]; } return *min_element(cbegin(dp), cend(dp)); } };
参考后
从后向前,省了不少运算
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { int n = triangle.size(); if (n == 0) return 0; vector<int> dp(triangle[n - 1]); for (int i = n - 2; i >= 0; --i) { for (int j = 0; j <= i; ++j) { dp[j] = min(dp[j], dp[j + 1]) + triangle[i][j]; } } return dp[0]; } };
相关文章推荐
- LeetCode解题报告 120. Triangle [medium]
- LeetCode 120. Triangle 解题报告
- leetCode刷题归纳-Dynamic Programming(120. Triangle)
- leetcode_120. Triangle
- 【LeetCode】120. Triangle
- Leetcode 120. Triangle
- LeetCode -- 120. Triangle
- leetcode120. Triangle
- [leetcode] 120. Triangle 解题报告
- LeetCode 120. Triangle (Python)最优解--Apolo_Shane
- LeetCode 120. Triangle 解题报告
- LeetCode-120. Triangle
- 120. Triangle LeetCode
- [LeetCode]120. Triangle
- 【LeetCode】120. Triangle (3 solutions)
- Leetcode-120. Triangle
- [Leetcode] 120. Triangle 解题报告
- LeetCode - 120. Triangle - 思路详解 - C++
- [leetcode]120. Triangle(Java)
- [leetcode]120. Triangle