下面是一个柱形图,包含若干整数(非负),代表每个柱形的高度,每个柱形的宽度为1。下雨过后,柱形之间可以积水。 上图是数组[0,1,3,1,0,0,2,2,1,2,1]表示的柱形高度图,如图所示,可以积6个单位的水(紫色部分表示雨水) 输入: [0,1,3,1,0,0,2,2,1,2.1]或[0,1,3,1,0,0,2,2,1,2,1];输出:[0,0,0,1,2,2,0,0,1,0,0] 解释:输出数组为每个位置积水的数量 的java实现代码
时间: 2023-09-14 22:03:24 浏览: 49
以下是给定数组计算每个位置积水的数量的Java实现代码:
```java
public static int[] calculateWaterVolume(int[] heights) {
int n = heights.length;
int[] leftMax = new int[n]; // 左边的最大值数组
int[] rightMax = new int[n]; // 右边的最大值数组
// 计算每个位置左边的最大值
leftMax[0] = heights[0];
for (int i = 1; i < n; i++) {
leftMax[i] = Math.max(leftMax[i - 1], heights[i]);
}
// 计算每个位置右边的最大值
rightMax[n - 1] = heights[n - 1];
for (int i = n - 2; i >= 0; i--) {
rightMax[i] = Math.max(rightMax[i + 1], heights[i]);
}
int[] water = new int[n]; // 每个位置积水的数量数组
for (int i = 0; i < n; i++) {
water[i] = Math.max(0, Math.min(leftMax[i], rightMax[i]) - heights[i]);
}
return water;
}
```
使用方法:
```java
int[] heights = {0, 1, 3, 1, 0, 0, 2, 2, 1, 2, 1};
int[] water = calculateWaterVolume(heights);
System.out.println(Arrays.toString(water));
```
输出结果为:`[0, 0, 0, 1, 2, 2, 0, 0, 1, 0, 0]`。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)