class Solution
{
// 面积
//矩形的长度:两条垂直线的距离
//矩形的宽度:两条垂直线其中较短一条的长度
public int maxArea(int[] height) {
//设置两个指针 left 和 right,分别指向数组的最左端和最右端。 此时,两条垂直线的距离是最远的,
int l = 0, r = height.length - 1;
int res = 0;
while (l < r) {
// 若要下一个矩形面积比当前面积来得大,
int lHigh = height[l];
int rHigh = height[r];
int area = Math.min(lHigh, rHigh) * (r - l);
res = Math.max(res, area);
// 把 height[left] 和 height[right] 中较短的垂直线往中间移动,
// 看看是否可以找到更长的垂直线。
if (lHigh <= rHigh) {++l;
} else {--r;}
//例子的核心在于:贪心,每次保留最长的边向中间求面积
}
return res;
}
}