首先容器的计算面积两个坐标纵坐标的最小值 * 横坐标的差
即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条)