Menu
CoddyTech

Trapping Rain Water

一排柱子并排排列,每根宽 1 个单位:height[i] 表示第 i 根柱子的高度。雨水会积在柱子之间的低洼处。只有当某根柱子的左侧和右侧都存在更高的柱子时,水才会留在这根柱子上方;越过最左边和最右边的柱子后,水就会流走。返回这一排柱子能容纳的水的总单位数。

函数

trap(height: integer-array) → integer
heightinteger-array
每个条形的高度,从左到右
返回值integer
被困住的水的总量

约束条件

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • 每个柱子宽 1 个单位,水不会停留在第一个或最后一个柱子外侧。

示例

输入
height = [0, 3, 1, 0, 2, 5, 1, 2]
输出
7
解释
在 3 和 5 之间的数字是 3:比 1 大 2,比 0 大 3,比 2 大 1。后面的 1 位于 5 和 2 之间,所以它表示 1。这样结果就是 7。
challenge icon

进阶

假设这些柱子构成一个高度各不相同的二维网格,水可以向四个方向流走。这时,你会如何计算被困住的水量?

重置代码
def trap(height):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

height = [0, 3, 1, 0, 2, 5, 1, 2]

预期输出

7