Menu
CoddyTech

Trapping Rain Water

Bir sıra çubuk yan yana durur; her biri bir birim genişliğindedir: height[i], i çubuğunun yüksekliğidir. Yağmur suyu çubukların arasındaki çukurlarda birikir. Su, yalnızca hem solunda hem de sağında daha uzun bir çubuk varsa bir çubuğun üzerinde kalır; ilk ve son çubuğun ötesinde akıp gider. Sıranın tuttuğu toplam su birimi sayısını döndürün.

Fonksiyon

trap(height: integer-array) → integer
heightinteger-array
her çubuğun yüksekliği, soldan sağa
Döndürürinteger
hapsolmuş suyun toplam birim miktarı

Kısıtlar

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • Her çubuk bir birim genişliğindedir ve su ilk çubuğun önünde ya da son çubuğun arkasında birikmez.

Örnekler

Girdi
height = [0, 3, 1, 0, 2, 5, 1, 2]
Çıktı
7
Açıklama
3 ile 5 arasındaki seviye 3'tür: 1'in üzerinde 2 birim, 0'ın üzerinde 3, 2'nin üzerinde 1. Sonraki 1, 5 ile 2'nin arasında yer alır; bu nedenle 1 değerini taşır. Böylece 7 eder.
challenge icon

Ek soru

Çubukların yüksekliklerden oluşan 2B bir ızgara oluşturduğunu ve suyun dört yönden de dışarı akabildiğini varsayalım. Bu durumda hapsolan suyu nasıl hesaplarsın?

Kodu sıfırla
def trap(height):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

7