
首先容器的计算面积两个坐标纵坐标的最小值 * 横坐标的差
即res = Math.max(res,Math.min(height[p1],height[p2]) * (p2-p1));
接下来就是两个指针如何移动。 p2-p1一开始就是最大的,在移动肯定是变小。而且都是变小1。所以应该让纵坐标小的指针移动。
class Solution {
public int maxArea(int[] height) {
int res = 0;
int p1 = 0;
int p2 = height.length - 1;
while(p1 < p2){
res = Math.max(res,Math.min(height[p1],height[p2]) * (p2-p1));
if(height[p2] > height[p1]) p1++;
else p2--;
}
return res;
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)