LeetCode11。ほとんどの水[C ++]の入った容器

所与  の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;
    }
};

 

おすすめ

転載: blog.csdn.net/ueh286/article/details/92834821