该题的核心思想是较小高度的垂线会决定总体的高度,因此以靠近横坐标的方式移动较小高度的垂线将有可能使面积增大。对于这种单向有序的问题通常可以使用双指针来解决。
public class LC11_maxArea {
public int maxArea(int[] height) {
int left = 0, right = height.length - 1;
int maxSum = 0;
while (left < right){
int ans = Math.min(height[left], height[right]);
maxSum = Math.max(maxSum, ans * (right - left));
if (height[left] > height[right])
right--;
else
left++;
}
return maxSum;
}
}