給定 n 根垂直線 x=i, y=height[i],選兩根線與 x 軸圍成容器,使容積最大。容積 = (j-i) * min(height[i], height[j])。n ≥ 2。
class Solution {
public:
int maxArea(vector& height) {
int i = 0, j = height.size() - 1, ans = 0;
while (i < j) {
int area = (j - i) * min(height[i], height[j]);
ans = max(ans, area);
if (height[i] <= height[j]) ++i;
else --j;
}
return ans;
}
};
O(n) 時間,O(1) 空間。暴力 O(n²) 會超時。