一般来说左右指针初始化条件:left=0;right=n-1;(n为数组元素数量)通过左右指针的移动来解一些问题,下面举一些例子:leetcode 盛最多水的容器。
总的来说,他是想让我们求一下规则矩形最大面积(其前提是不漏水)所以这道题就可以用左右指针来做。知道了height[left]和height[right]就可以算出来left和right之间的面积。
class Solution {
public:
int maxArea(vector<int>& height) {
int k=height.size();
int left=0;
int right=k-1;
int ans=0;
while(left<right)
{
int area=min(height[left],height[right])*(right-left);
ans=max(ans,area);
if(height[left]<=height[right])
{
left++;
}
else right--;
}
return ans;
}
};
至于最大值,只需要设一个max函数比较矩形之间的面积就好了。