题目列表
柱状图中最大的矩形 84. 柱状图中最大的矩形 - 力扣(LeetCode)
一、接雨水
1. 暴力法思路
暴力解法的本质是逐个位置计算接水量,步骤如下:
- 遍历数组中每一个位置(首尾位置无法接水,直接跳过);
- 对每个位置 i:
- 找 i 左边(包括 i)的最大高度 maxLeft;
- 找 i 右边(包括 i)的最大高度 maxRight;
- 计算该位置的接水量:min(maxLeft, maxRight) - height[i](结果≥0 才有效);
- 累加所有位置的接水量,得到总水量。
2. 暴力法实现代码
class Solution {
public int trap(int[] height) {
int len = height.length;
int sum = 0;
for (int i = 0; i < len; i++) {
if (i == 0 || i == len - 1) {
continue;
}
int maxLeft = height[i];
int maxRight = height[i];
for (int j = i; j >= 0; j--) {
if (height[j] > maxLeft) {
maxLeft = height[j];
}
}
( i; j < len; j++) {
(height[j] > maxRight) {
maxRight = height[j];
}
}
sum += Math.min(maxLeft, maxRight) - height[i];
}
sum;
}
}

