设置左右指针分别指向首尾,直到二者相遇。
移动指针:移动左右指针中,指向位置数值(高度)小的那个--如果移动高度大的指针,计算容量不一定发生变化(容量由高度小的决定)。
双指针代表的是 可以作为容器边界的所有位置的范围。
在一开始,双指针指向数组的左右边界,表示 数组中所有的位置都可以作为容器的边界,因为我们还没有进行过任何尝试。
在这之后,我们每次将 对应的数字较小的那个指针 往 另一个指针 的方向移动一个位置,就表示我们认为 这个指针不可能再作为容器的边界了。
class Solution {
public:
int maxArea(vector<int>& height) {
int leftp=0;
int rightp=height.size()-1;
int vol=0;
int shorth;
while(leftp<rightp){
shorth=min(height[leftp],height[rightp]);
vol= vol>((rightp-leftp)*shorth)?vol:((rightp-leftp)*shorth);
if(height[leftp]<height[rightp]){
leftp++;
}
else rightp--;
}
return vol;
}
};