方法:双指针
本题要求的是容器的最多容量
容量 = Min(左边界,右边界) * (左右边界的距离)
从上面的公式我们可以想到使用相向双指针
然后就是指针怎么移动的问题。
容量由短板决定,如果我们移动长板,无论后面是否有比长板更长的长度,容量以及被短板决定了,所以移动长板是无用的。
如果我们移动短板,容量可能变少,也可能变多。
所以我们只需要移动短板即可,最终取容量最大的结果。
class Solution {
public int maxArea(int[] height) {
int l = 0, r = height.length - 1;
int ans = 0;
while (l < r){
int area = Math.min(height[r],height[l]) * (r - l);
ans = Math.max(ans,area);
if(height[l] < height[r]){
l++;
}else{
r--;
}
}
return ans;
}
}