题目关键
使用双指针解决这个问题:由于面积取决于边长短的那一端假设为m,所以要想得到比当前更大的面积,边长短的那一端必须舍弃,因为如果不舍弃,高最大就是m,而随着指针的移动宽会一直减小,因此面积只会越来越小。
Java代码
public int maxArea(int[] height) {
int max_area = 0;
int l = 0;
int r = height.length-1;
int curArea = 0;
while(l<r){
curArea = (r-l)*Math.min(height[l] ,height[r]);
max_area = max_area>curArea?max_area:curArea;
if(height[l]<=height[r]){
l++;
}else{
r--;
}
}
return max_area;
}