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: 2 יחידות מעל 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