题目解析:
https://leetcode-cn.com/problems/container-with-most-water/solution/tu-jie-sheng-shui-zui-duo-de-rong-qi-by-zhenzhen20/
原题链接:https://leetcode-cn.com/problems/container-with-most-water
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器,且 n 的值至少为 2。
class Solution {
public:
int maxArea(vector<int>& height) {
int N = height.size();
if(N <= 1) return -1;
int i = 0, j = height.size() - 1;
int leftM = height[0];
int rightM = height[N-1];
int res = (N-1) * min(leftM, rightM);
while(i < j){
if(leftM < rightM)
{
while (i < j && height[++i] <= leftM);
if (i >= j) break;
leftM = height[i];
res = max(res, (j - i) * min(leftM, rightM));
}
else
{
while (i < j && height[--j] <= rightM);
if (i >= j) break;
rightM = height[j];
res = max(res, (j - i) * min(leftM, rightM));
}
}
return res;
};
};