题目:11. 盛最多水的容器
描述:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
思路:原代码##1、确实没想到还能双指针;
2、双指针从头尾开始,每次都移动**height[i]**值较小的那个,然后计算面积,比较ans并更新ans;
3、每次都移动自己最差的一边,虽然可能变得更差,但大概率会找到找到更好的结果。
4、这个双指针确实有点不一般。
class Solution {
public:
int maxArea(vector& height) {
int n = height.size();
int l = 0, r = n - 1;
int ans = (r - l) * min(height[l], height[r]);
while (l < r) {
if (height[l] < height[r]) {
l++;
} else {
r--;
}
int temp = (r - l) * min(height[l], height[r]);
ans = max(ans, temp);
}
return ans;
}
};



