标解 O ( n ) O(n) O(n),看了题解才明白。。。自己的方法是 O ( n l o g n ) O(nlogn) O(nlogn)的,从大到小枚举,二分+树状数组得到最小或最大的下标。
class Solution
{
public:
int maxArea(vector<int>& height)
{
int n=height.size();
int l=0,r=n-1,mxx=0;
while(l<r)
{
mxx=max(mxx,(r-l)*min(height[r],height[l]));
if(height[l]<=height[r]) l++;
else r--;
}
return mxx;
}
};