Menu
CoddyTech

Swim in Rising Water

נתונה לך רשת n × n של גבהים, שבה כל מספר מ-0 עד n²-1 מופיע בדיוק פעם אחת. בזמן t מפלס המים עומד בגובה t בכל מקום, ולכן כל תא שגובהו t או פחות נמצא מתחת למים. מתחילים בתא השמאלי העליון. אפשר לשחות, בלי שיחלוף זמן, לתא שחולק צלע עם התא שלך, כאשר שני התאים מתחת למים. החזר את הזמן המוקדם ביותר שבו אפשר להגיע לתא הימני התחתון.

פונקציה

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
הגבהים, כרשימה של n שורות של n מספרים
מחזירהinteger
המועד המוקדם ביותר שבו אפשר להגיע לתא הימני התחתון

אילוצים

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • כל ערך מ־0 עד n²-1 מופיע פעם אחת בדיוק.

דוגמאות

קלט
grid = [[0, 2], [3, 1]]
פלט
2
הסבר
דרך התא הימני העליון המסלול הוא 0, 2, 1, כשהתא הגבוה ביותר הוא 2. דרך התא השמאלי התחתון המסלול הוא 0, 3, 1, כשהתא הגבוה ביותר הוא 3. בזמן 2 המסלול הראשון נמצא מתחת למים.
challenge icon

שאלת המשך

אם הגבהים יכולים לחזור על עצמם ולהגיע עד 10^9, איזו מהגישות שלך עדיין עובדת ללא שינוי, ועל מה היית מבצע חיפוש בינארי?

איפוס הקוד
def swimInWater(grid):
    # כתבו כאן את הקוד

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

grid = [[0, 2], [3, 1]]

הפלט הצפוי

2