class Solution {
public int maxArea(int[] height) {
/*
方法,由于面积是长*宽的原因,而长的最大值是一开始便知道的(数组的长度-1);
因此可设置两个指针p,q;p指针初始指向数组头部,q指针初始指向数组尾部;
并计算此时的面积;之后比较p指针处和q指针处数组的值,若p指针处的值小则将p指针后移
反之若q指针处的值小则将q指针前移;反复这样处理知道p指针与q指针指向数组的同一个位置处时结束
此时就可以得到最大面积
*/
//1.定义两个指针p,q
int p = 0,q = height.length-1;
int maxVolumn = 0;
while(p < q){
//2.比较p和q处数组的值并判断要移动哪个指针
int minHeight,currentVolumn;
int width = q - p;
if(height[p] < height[q])
minHeight = height[p++];
else
minHeight = height[q--];
currentVolumn = minHeight * width;
//3.判断是否需要更新maxVolumn
if(currentVolumn > maxVolumn)
maxVolumn = currentVolumn;
}
return maxVolumn;
}
}
leetcode11. 盛最多水的容器
最新推荐文章于 2024-10-01 23:05:47 发布