计算数组描述的工具可以容纳的水量

Ro1*_*168 4 algorithm

有一个收集雨水的工具。工具的横断面图由长度为n的数组描述。

例如:对于此数组 {2,1,1,4,1,1,2,3},样线图为: 点击这里

我需要计算该工具可以承受的水量,时间和地点复杂度为 O(n)。。对于上面的数组,它是 7(灰色区域)。 点击这里

我的想法:

由于这是一个图形问题,我最初的想法是首先计算数组的最大值并将其乘以n。这是我需要减去的起始体积。

例如,在上面的数组中,我需要减去绿色区域和高度本身: 点击这里

这就是我陷入困境的地方,需要帮助才能以所需的复杂性做到这一点。

注意:也许我想太多了,有更好的方法来处理这个问题。但正如我所说,由于这是一个图形问题,我的第一个想法是寻求几何解决方案。

任何提示或提示将不胜感激。

Mat*_*ans 5

该位置的水位i是以下较小者:

  • 位置 <= i 处的最大容器高度;和
  • 位置 >= i 处的最大容器高度

使用两次遍历数组来计算每个位置的这两个最大值,然后总结水位和容器高度之间的差异。