You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定树高数组求最大剩余树高和,求低于O(N²)的优化解法

树木切割求最大高度总和问题

给定n个非负数值a₁、a₂、…、aₙ,每个数值对应坐标点(i, aᵢ),以此绘制n条垂直线代表树高——第i条线的两端点为(i, aᵢ)和(i, 0)。

需对树木进行切割,满足以下规则:

  • 切割后所有保留的树的顶部必须处于同一直线(该直线无需与地面平行)
  • 允许移除第一棵或最后一棵树,此时被移除树的根部需与其余树的顶部对齐

求切割后可获得的最大树高总和。

示例

输入:

1.00
2.00
4.00
6.00

输出:12.00
(注:最优方案为移除第一棵树,其余树的顶部连线经过第一棵树的根部(1,0)和第四棵树的顶部(4,6),此时各保留树的高度分别为2、4、6,加上被移除树对应的0,总和为12.00)

现有解法

我当前的最优解法时间复杂度为O(N²),核心思路是:最优切割的顶部连线必然经过两棵树的顶部(或是一棵的顶部与被移除树的根部),因此遍历每棵树的顶部,寻找另一棵能使总和最大的树,计算对应总和后取全局最大值。

提问

是否存在时间复杂度低于O(N²)的解法?

内容的提问来源于stack exchange,提问作者lavor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:06:27