Menu
CoddyTech

Trapping Rain Water

Una fila de barras está dispuesta una al lado de otra, cada una de una unidad de ancho: height[i] es la altura de la barra i. La lluvia se acumula en los huecos entre las barras. El agua permanece sobre una barra solo si hay una barra más alta en algún lugar a su izquierda y otra en algún lugar a su derecha; más allá de la primera y la última barra, se escurre. Devuelve el total de unidades de agua que retiene la fila.

Función

trap(height: integer-array) → integer
heightinteger-array
la altura de cada barra, de izquierda a derecha
Devuelveinteger
las unidades totales de agua atrapada

Restricciones

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • Cada barra tiene una unidad de ancho, y el agua no se queda más allá de la primera ni de la última barra.

Ejemplos

Entrada
height = [0, 3, 1, 0, 2, 5, 1, 2]
Salida
7
Explicación
Entre el 3 y el 5, el nivel es 3: 2 unidades por encima del 1, 3 por encima del 0, 1 por encima del 2. El 1 posterior se encuentra entre el 5 y un 2, así que vale 1. Eso da 7.
challenge icon

Para ir más allá

Supón que las barras forman una cuadrícula 2D de alturas y el agua puede escapar en las cuatro direcciones. ¿Cómo contarías después el agua atrapada?

Restablecer código
def trap(height):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

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

Salida Esperada

7