[LeetCode]11盛水最多的容器
如图所示,假设左边小于右边
通过如下分析,双指针每次只需要移动较小那边即可,因为只有移动较小那边才有比初始的容量大的可能
代码如下:
class Solution {
public:
int maxArea(vector<int>& height) {
int i = 0, j = height.size() - 1;
int res = 0;
while(i < j)
{
res = max(res, (j - i) * min(height[i], height[j]));
//为了追求最大的,移动稍高那边最多还是(j - i - 1)* min(height[i], height[j])
//移动稍低的那边有可能比之前的大
if(height[i] > height[j]) j --;
else if(height[i] <= height[j]) i ++;
}
return res;
}
};