Java请使用面向对象程序设计方法对以下题目进行封装 Java,涉及基本数据结构和容器的,需自行编写相应的类,禁止直接使用STL的数据容器类,要求代码能运行。给定一个长度为n(2 <= n <= 105)的整数数组height,表示有n条垂线,x坐标为i的线段高度为height[i] (0 <= height[i] <= 104)。第i条线段的两个端点坐标分别为(i, 0)和(i, height[i])。 找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。代码
时间: 2024-03-10 22:51:16 浏览: 56
以下是基于面向对象程序设计方法对该问题进行封装的Java代码,可以直接运行:
```
public class Container {
private int[] height;
public Container(int[] height) {
this.height = height;
}
public int getMaxWater() {
int maxWater = 0;
int left = 0, right = height.length - 1;
while (left < right) {
int water = (right - left) * Math.min(height[left], height[right]);
maxWater = Math.max(maxWater, water);
if (height[left] < height[right]) {
left++;
} else {
right--;
}
}
return maxWater;
}
public static void main(String[] args) {
int[] height = {1, 8, 6, 2, 5, 4, 8, 3, 7};
Container container = new Container(height);
int maxWater = container.getMaxWater();
System.out.println(maxWater);
}
}
```
在上述代码中,我们定义了一个名为Container的类,其中包含一个私有的整型数组height作为成员变量。在构造函数中,我们将传入的数组height赋值给成员变量。我们还定义了一个getMaxWater()方法,用于计算容器可以储存的最大水量。在该方法中,我们使用双指针法来遍历数组,计算每一组容器的水量,并更新最大水量maxWater。最后返回最大水量即可。
在main()方法中,我们创建了一个Container对象,并传入示例数组height。然后调用该对象的getMaxWater()方法,将返回的最大水量打印输出。
阅读全文