42. 接雨水
1. 题目
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
示例 1:

1  | 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]  | 
示例 2:
1  | 输入:height = [4,2,0,3,2,5]  | 
提示:
n == height.length1 <= n <= 2 * 1040 <= height[i] <= 105
2. 思路
初始化
L数组与R数组,并初始化lMax变量与rMax变量L数组: 从左往右遍历存储与左侧最大值
lMax与当前值的差值R数组: 从右往左遍历存储与右侧最大值
rMax与当前值的差值lMax变量: 当遍历生成
L数组的同时,实时更新该变量为最大值rMax变量: 当遍历生成
R数组的同时,实时更新该变量为最大值
在完成上述
L数组和R数组的计算后,使用变量count遍历累加获取Math.min(L[i], R[i]) - height[i]值得到答案,如下图

3. 代码
1  | class Solution {  | 
4. 复杂度
- 时间复杂度: 
O(n) - 空间复杂度: 
O(n) 
