题目:
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。
初始化分别位于高度数组开始和结束处的左右两个指针。计算指针当前位置的两行之间的面积。如果当前面积较大,更新最大面积。将高度较小的指针移向另一个指针。
java
public class no_11 {
public static void main(String[] args) {
int[] arr = {1, 8, 6, 2, 5, 4, 8, 3, 7};
System.out.println(maxArea(arr));
}
public static int maxArea(int[] height) {
int left = 0;
int right = height.length - 1;
int maxArena = 0;
while (left < right) {
int h = Math.min(height[left], height[right]);
int w = right - left;
int arena = h * w;
maxArena = Math.max(arena, maxArena);
if (height[left] < height[right]) {
left++;
} else {
right--;
}
}
return maxArena;
}
}