import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param height int整型一维数组 
     * @return int整型
     */
    public int maxArea (int[] height) {
        // write code here
        //暴力枚举,超时
        // int ret = 0;
        // int v = 0;
        // for(int i=0;i<height.length;i++){
        //     for(int j=i+1;j<height.length;j++){
        //         v = Math.abs(j-i) *Math.min(height[j],height[i]);

        //         ret = Math.max(ret,v);
        //     }
        // }
        // return ret;

        //双指针:从两边开始利用单调性.高度减少时向里缩进,宽度也在减少。规律进行。
        int ret =0;
        int left=0;
        int right = height.length-1;
        while(left<right){
            int v = Math.min(height[left],height[right]) * (right-left);
            ret = Math.max(ret,v);

            //移动,移动高度小的
            if(height[left]<height[right]) left++;
            else right--;
        }

        return ret;
    }
}