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; } }