Menu
CoddyTech

Trapping Rain Water

Bir sıra çubuk yan yana durur ve her biri bir birim genişliğindedir: height[i], i çubuğunun yüksekliğidir. Sıranın üzerine yağmur yağar ve çubukların arasındaki çukurlarda birikir. Su, yalnızca hem solunda hem de sağında bir yerde 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 birim kare su miktarını döndürün.

Fonksiyon

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

Kısıtlar

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

Örnekler

Girdi
height = [0, 3, 1, 0, 2, 5, 1, 2]
Çıktı
7
Açıklama
3 ile 5 arasında su, 3. seviyeye kadar yükselir: 1 yüksekliğindeki sütunun üzerinde 2 birim, 0'ın üzerinde 3 birim ve 2'nin üzerinde 1 birim tutar. Sona yakın olan 1, 5 ile bir 2 arasında yer alır; bu nedenle seviyesi 2'dir ve 1 birim su tutar. 2 + 3 + 1 + 1 = 7.

lock iconGönderirken +17 gizli test

challenge icon

Ek soru

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

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

7