所与 のn 非負整数 A1、 A2、... 、それぞれ座標(点で表すI、 AIが)。 N個の縦線は、描かれている2つのラインの端点 iは である(I、 AI)及び(I、0)。一緒に、x軸と容器がほとんど水を含むように、容器を形成する2つの行を見つけます。
注意: あなたは、コンテナを傾斜していないかもしれ nは 少なくとも2です。
上記垂直線は、アレイ[1,8,6,2,5,4,8,3,7]で表されます。この場合、容器が含むことのできる水(青色部分)の最大面積は49です。
例:
Input: [1,8,6,2,5,4,8,3,7]
Output: 49
問題解決のアイデア:
左+右、配列全体を横切ります。最大面積を取ります。移動、左、右の小さな。
class Solution {
public:
int maxArea(vector<int>& height) {
int left=0,right=height.size()-1,area=0;
while(left<right)
{
int area2=(height[left]<height[right]?height[left]:height[right])*(right-left);
area=area>area2?area:area2;
if(height[left]<height[right])
left++;
else
right--;
}
return area;
}
};