题目描述
给定 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 { |