题解: 这题依赖于双指针[l,r]。盛水容器可以看作是矩形面积=长*高。当左边指针l在最左边,右边指针r在最右边时,长最大,高是两者高度较小者。当指针往里收时,长会变小,那么高如果变大,矩形面积才有可能变大,因此判断左右高度,移动高度较小的指针往里收,这样枚举到l>=r时,就可以得到最大面积的矩形。

class Solution {
    public int maxArea(int[] height) {
        int l = 0, r = height.length - 1;
        int ans = 0;
        while (l < r) {
            ans = Math.max(Math.min(height[l], height[r]) * (r - l), ans);
            if (Math.min(height[l], height[r]) == height[l]) l ++;
            else r --;
        }
        return ans;
    }
}