找回密码
 立即注册
查看: 21|回复: 0

力扣120题**攻略:动态规划解三角形最小路径和(C++实现)

[复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:21
  • 打卡月天数:9
  • 打卡总奖励:137
  • 最近打卡:2025-07-13 16:05:00

24

主题

0

回帖

4500

积分

VIP会员

积分
4500
发表于 2025-6-20 11:51:43 | 显示全部楼层 |阅读模式
截图未命名.jpg 问题描述
给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的节点上。
C++解决方案(带注释)
  1. #include <vector>
  2. #include <algorithm>
  3. using namespACe std;

  4. class Solution {
  5. public:
  6.     int minimumTotal(vector<vector<int>>& triangle) {
  7.         int n = triangle.size();
  8.         // 从倒数第二层开始向上递推
  9.         for (int i = n - 2; i >= 0; --i) {
  10.             for (int j = 0; j <= i; ++j) {
  11.                 // 当前节点的最小路径和 = 当前值 + 下一层相邻两个节点的较小值
  12.                 triangle[i][j] += min(triangle[i+1][j], triangle[i+1][j+1]);
  13.             }
  14.         }
  15.         return triangle[0][0]; // 返回顶点的最小路径和
  16.     }
  17. };
复制代码

算法解析
  • 动态规划思想:采用自底向上的方法,避免重复计算
  • 时间复杂度:O(n²),其中n是三角形的行数
  • 空间复杂度:O(1),直接在原数组上修改

优化思路
  • 可以使用一维数组进一步优化空间复杂度
  • 边界条件处理:当三角形为空时直接返回0

来源:力扣120题**攻略:动态规划解三角形最小路径和(C++实现)

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表