思路:
这道题的意思就是选择两根柱子,其他的你可以视而不见(消失不见了),那么由着两根柱子围成的水量有多少。
这道题涉及到双指针,一前一后循环遍历,唯一要理解的点就是题意以及为什么height[i] < height[j]时,是++i的原因,也可以这么理解,那边小的那边就往前推进,因为我是要取最大值,有点类似于短板效应。
具体可看看人家写的解释,请点击!
代码:
class Solution {
public:
int maxArea(vector<int>& height) {
int l = 0,r = height.size()-1;
int sum = 0;
while(l<r){
sum = max(sum,min(height[l],height[r])*(r-l));
if(height[l]<height[r]){
++l;
}else{
--r;
}
}
return sum;
}
};