Menu
CoddyTech

Trapping Rain Water

Deretan batang berdiri berdampingan, masing-masing selebar satu unit: height[i] adalah tinggi batang i. Air hujan terkumpul di cekungan di antara batang-batang. Air hanya tertahan di atas sebuah batang jika ada batang yang lebih tinggi di sebelah kiri dan di sebelah kanannya; air mengalir keluar melewati batang pertama dan terakhir. Kembalikan total unit air yang ditampung deretan tersebut.

Fungsi

trap(height: integer-array) → integer
heightinteger-array
tinggi setiap batang, dari kiri ke kanan
Mengembalikaninteger
jumlah total unit air yang terperangkap

Batasan

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • Setiap batang lebarnya satu unit, dan air tidak dapat bertahan melewati batang pertama atau batang terakhir.

Contoh

Input
height = [0, 3, 1, 0, 2, 5, 1, 2]
Output
7
Penjelasan
Di antara 3 dan 5, tingkatnya adalah 3: 2 unit di atas 1, 3 di atas 0, 1 di atas 2. Angka 1 yang muncul belakangan berada di antara 5 dan 2, jadi nilainya 1. Hasilnya 7.
challenge icon

Pertanyaan lanjutan

Misalkan batang-batang itu membentuk grid 2D dengan ketinggian tertentu dan air dapat mengalir keluar ke keempat arah. Bagaimana cara menghitung air yang terperangkap?

Reset kode
def trap(height):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

7