问题描述给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的节点上。 C++解决方案(带注释)- #include <vector>
- #include <algorithm>
- using namespACe std;
- class Solution {
- public:
- int minimumTotal(vector<vector<int>>& triangle) {
- int n = triangle.size();
- // 从倒数第二层开始向上递推
- for (int i = n - 2; i >= 0; --i) {
- for (int j = 0; j <= i; ++j) {
- // 当前节点的最小路径和 = 当前值 + 下一层相邻两个节点的较小值
- triangle[i][j] += min(triangle[i+1][j], triangle[i+1][j+1]);
- }
- }
- return triangle[0][0]; // 返回顶点的最小路径和
- }
- };
复制代码
算法解析优化思路来源:力扣120题**攻略:动态规划解三角形最小路径和(C++实现)
|