题目要求
 
 思路
 1.正常用双循环外循环i从0开始,内循环从height.size()-1开始去计算每一个值是可以的,但是因为数据量太大,会超时。
 2.考虑到超时,需要优化一些,比如第一个选下标1,第二个选下标3和第一个选下标3,第二选择下标1是一样的,所以,内循环遍历到小于
 时,数据重复可以跳过,但是优化后还是超时
 3.考虑优化高度,如果i一样,height[j] > height[j-1],说明高度要么减小要么不变,但是由于底减少,所以面积肯定降低,所以再拿height[j] > height[j-2]进行比较,只要小于height[j]的都可以跳过。同理如果j一样,height[i] > height[i+1]如果满足这个,也可以跳过。但是优化后还有超时
 4.此时说明双循环已经不能满足了,我们采用双指针left和right,此时,底部已经是最大的了,我们可以将两个值较小的那个往中间移动,去寻找更大面积的组合。
 代码实现
class Solution {
public:
    int maxArea(vector<int>& height) {
        int left = 0;
        int right = height.size() - 1;
        int s = 0;
        int max = 0;
        while(left < right)
        {
            int h = min(height[left], height[right]);
            s = h * (right - left);
            if(s > max)
                max = s;
            
            //移动指针
            if(height[left] > height[right])
                right--;
            else
                left++;
        }
        return max;
    }
};



















