思路: 使用双指针,L开始一个指向最左端高度h1 R指向最右端高度h2,当前可容纳的水量为: min(h1,h2)*(n-1-0),然后移动高度小的指针(因为如果移动高度大的指针,min将会<=之前的min,而且指针之间的距离也会缩短此时容的水量一定在变小),直到L==R为止。
class Solution {
public:
int maxArea(vector<int>& height) {
int n = height.size();
int l = 0, r = n - 1;
int ans = 0;
int tmp;
while(l < r) {
tmp = min(height[l], height[r]) * (r - l);
ans = max(ans, tmp);
if (height[l] <= height[r]) {
l++;
}else {
r--;
}
}
return ans;
}
};