class Solution {
public:
int maxArea(vector<int>& height) {
int left = 0, right = height.size()-1;
int ans = 0;
while(left < right)
{
ans = max(ans, min(height[left], height[right])* (right - left));
if(height[left] < height[right])
{
left++;
}
else
{
right--;
}
}
return ans;
}
};
代码解释:
一开始的时候,left = 0, right = height.size()-1
宽度肯定是大的,接下来要选择一个指针移动,因为容器装水高度由高度低的决定,所以如果指向高度小的指针移动,可能装的水的更多(也有可能更少),但移动指向高的指针,装的水肯定会减少(宽度肯定减小,高度不一定,但是容器装水高度由高度低的决定),所以要移动指向高度小的指针才有可能装的更多的水。