思路:
两个指针, 一个从头开始, 一个从尾开始, 每次循环都尝试更新一下最大值. 然后如果左边的高度低, 就左指针向右移动, 相反, 如果右边高度低, 就把右边往左移动
int maxArea(vector<int>& heights) {
int res = 0, left = 0, right = heights.size() - 1;
while (left < right) {
res = max(res, (right - left) * min(heights[left], heights[right]));
if (heights[left] < heights[right]) left++;
else right--;
}
return res;
}