題意是有個高度數組,就相當於隔板的高度,求數組中任意兩隔板間盛水的最大量。隔板間的距離與較低隔板的高度乘積即為盛水的容量。
int maxArea(vector<int> &height)
{
int capability = 0;
size_t left = 0, right = height.size() - 1;
while (left < right)
{
const int water =
min(height[left], height[right]) * (right - left);
if (water > capability) capability = water;
if (height[left] < height[right])
{
++left;
}
else
{
--right;
}
}
return capability;
}