Java请使用面向对象程序设计方法对以下题目进行封装 Java,给定一个长度为n(2 <= n <= 105)的整数数组height,表示有n条垂线,x坐标为i的线段高度为height[i] (0 <= height[i] <= 104)。第i条线段的两个端点坐标分别为(i, 0)和(i, height[i])。 找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。代码
时间: 2024-03-07 07:50:41 浏览: 65
Java面向对象程序设计(源代码).
以下是使用面向对象程序设计方法对题目进行封装的Java代码:
```java
public class ContainerWithMostWater {
private int[] height;
public ContainerWithMostWater(int[] height) {
this.height = height;
}
public int maxArea() {
int left = 0, right = height.length - 1;
int maxArea = 0;
while (left < right) {
int area = (right - left) * Math.min(height[left], height[right]);
maxArea = Math.max(maxArea, area);
if (height[left] < height[right]) {
left++;
} else {
right--;
}
}
return maxArea;
}
}
```
其中,`ContainerWithMostWater`类封装了题目所需的整数数组`height`以及求解容器最大水量的方法`maxArea()`。在`maxArea()`方法中,使用双指针法,从数组两端开始向中间收缩,计算每次收缩后容器的水量,并取最大值作为最终结果返回。
阅读全文