如果左边指针对应的数值小于右边指针的数值,不妨先固定右边的数值,移动左边的指针在小于右边指针的值的范围内寻找最大的max盛水量,左边指针向又右移动。
即无论怎么移动右指针,得到的容器的容量都小于移动前容器的容量。也就是说,这个左指针对应的数不会作为容器的边界了,那么就可以丢弃这个位置,将左指针向右移动一个位置,此时新的左指针与原先的右指针构成的左右位置,才可能会作为容器的边界。
class Solution {
public int maxArea(int[] height) {
int l = 0, r = height.length - 1;
int res = 0, area = 0;
while (l < r) {
area = Math.min(height[l], height[r]) * (r - l);
res = Math.max(res, area);
if (height[l] < height[r]) {
l++;
} else {
r--;
}
}
return res;
}
}