这个题目需要清楚一个规律,我们从最左边和最右边两个值开始,当左边的值比较小时,只有往右移动左边的线才可能得到更大的的值,具体代码如下所示:
class Solution { public: int maxArea(vector<int>& height) { int n = height.size(); if (n < 2) { return 0; } int left = 0; int right = n - 1; int max_area = 0; while (left < right) { max_area = max(max_area, (right - left) * min(height[left], height[right])); if (height[left] < height[right]) { left++; } else { right--; } } return max_area; } };