Menu
CoddyTech

Trapping Rain Water

Une rangée de barres se tient côte à côte, chacune d’une unité de large : height[i] est la hauteur de la barre i. L’eau de pluie s’accumule dans les creux entre les barres. L’eau ne reste au-dessus d’une barre que si une barre plus haute se trouve quelque part à sa gauche et quelque part à sa droite ; au-delà de la première et de la dernière barre, elle s’écoule. Retourne le nombre total d’unités d’eau retenues par la rangée.

Fonction

trap(height: integer-array) → integer
heightinteger-array
la hauteur de chaque barre, de gauche à droite
Renvoieinteger
le nombre total d’unités d’eau retenues

Contraintes

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • Chaque barre a une largeur d’une unité, et l’eau ne reste pas au-delà de la première ou de la dernière barre.

Exemples

Entrée
height = [0, 3, 1, 0, 2, 5, 1, 2]
Sortie
7
Explication
Entre le 3 et le 5, le niveau est 3 : 2 unités au-dessus du 1, 3 au-dessus du 0, 1 au-dessus du 2. Le 1 suivant se trouve entre le 5 et un 2, donc il vaut 1. Cela fait 7.
challenge icon

Pour aller plus loin

Supposons que les barres forment une grille 2D de hauteurs et que l’eau puisse s’échapper dans les quatre directions. Comment compteriez-vous alors l’eau piégée ?

Réinitialiser le code
def trap(height):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

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

Résultat attendu

7