Menu
CoddyTech

Trapping Rain Water

يقف صف من الأعمدة جنبًا إلى جنب، عرض كلٍّ منها وحدة واحدة: height[i] هو ارتفاع العمود i. تتجمع مياه الأمطار في المنخفضات بين الأعمدة. لا يبقى الماء فوق عمود إلا إذا وُجد عمود أطول منه في مكان ما على يساره وآخر على يمينه؛ أما بعد العمود الأول والأخير فينساب الماء بعيدًا. أعد إجمالي وحدات الماء التي يحتفظ بها الصف.

الدالة

trap(height: integer-array) → integer
heightinteger-array
ارتفاع كل عمود، من اليسار إلى اليمين
تُرجعinteger
إجمالي وحدات الماء المحتبَس

القيود

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • عرض كل عمود وحدة واحدة، ولا يبقى الماء خارج العمود الأول أو الأخير.

أمثلة

المدخلات
height = [0, 3, 1, 0, 2, 5, 1, 2]
المخرجات
7
الشرح
بين 3 و5، المستوى هو 3: وحدتان فوق 1، و3 فوق 0، و1 فوق 2. يقع الرقم 1 اللاحق بين 5 و2، لذا قيمته 1. وهذا يساوي 7.
challenge icon

سؤال إضافي

افترض أن القضبان تُشكّل شبكة ثنائية الأبعاد من الارتفاعات، ويمكن للماء أن يتسرّب في الاتجاهات الأربعة. كيف ستحسب كمية الماء المحبوس حينها؟

إعادة ضبط الشيفرة
def trap(height):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

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

الإخراج المتوقع

7