题解
考虑一个容器,其面积是 min(height[left], height[right]) * (right - left)
.
利用两个指针,分别指向头和尾,height[l] > height[r] ? r--, l++
。
class Solution {
public:
int maxArea(vector<int>& height) {
int l = 0, r = height.size() - 1;
int res = 0;
while(l < r){
int area = min(height[l], height[r]) * (r - l);
res = max(res, area);
height[l] > height[r] ? r-- : l++;
}
return res;
}
};