class Solution {
public int maxArea(int[] height) {
int left = 0;
int right = height.length - 1;
int area = 0;
while(left < right){
area = Math.max(area, (right-left)*Math.min(height[left], height[right]));
if(height[left] > height[right]){
right--;//面积取决于较小的边,移动较小的边面积才可能增大
}
else if(height[left] < height[right]){
left++;
}
else{
right--;
left++;//单独移动right或left都会使面积减小,同时移动可能增大
}
}
return area;
}
}
归纳:
双指针,左右两边各一个