給定 n 個非負整數 a1,a2,...,an,每個數代表坐標中的一個點?(i,?ai) 。在坐標內畫 n 條垂直線,垂直線 i?的兩個端點分別為?(i,?ai) 和 (i, 0)。找出其中的兩條線,使得它們與?x?軸共同構成的容器可以容納最多的水。
說明:你不能傾斜容器,且?n?的值至少為 2。
思路:兩個指針指向兩端,計算答案,更新最優。
之后短的指針向中間移動,因為所有以短指針為端點的情況都不會超過這個數(之后的情況都是寬度更小,由于短指針的限制,高度不會更高)。
?
public class Solution {public int maxArea(int[] height) {int maxarea = 0, l = 0, r = height.length - 1;while (l < r) {maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l));if (height[l] < height[r])++l;else--r;}return maxarea;}
}