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

1 | 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] |
基本思路
和这道题有些类似:11. 盛最多水的容器
对于下标i 下雨后水能到达的最大高度等于下标i两边的最大高度的最小值
下标i处能接的雨水量等于下标i处的水能到达的最大高度减去height[i]
leftMax表示当前在height[left]中及其左边 height的最大高度 rightMax是右边的最大高度
- 若
height[left] < height[right]则必有leftMax < rightMax下标left出所能接的雨水量等于leftMax - height[left]增加到res中 然后left右移 - 若
height[left] > height[right]则必有leftMax > rightMax下标right出所能接的雨水量等于rightMax - height[right]增加到res中 然后right右移
java实现
1 | class Solution { |