BRUTE FORCE暴力破解方法如下:

class Solution {
public:
    int maxArea(vector<int>& height) {
        //BRUTE FORCE
        int res = 0;
        int size = height.size();
        for(int i = 0;i<size;i++)
        {
            for(int j=i+1;j<size;j++)
            {
                res = max(res,(j - i) * min(height[i],height[j]));
            }
        }
        
        return res;
    }
};

不出意料的Time Limit Exceeded……
其实当我看到这里,脑子里忽然想起了非常经典的双指针问题,尝试实现O(N)的解法验证是否可行。两个指针从两端计算可以装水面积,移动的时候高度低的一方向高度较高的一方移动。

class Solution {
public:
    int maxArea(vector<int>& height) {
        //O(N)
        int left = 0,right = height.size() - 1,res = 0;
        while(left < right)
        {
            int area = (right -left) * min(height[left],height[right]);
            res = max(res,area);
            if(height[left] < height[right])
                left++;
            else
                right--;
        }
        
        return res;
    }
};