Menu
CoddyTech

Swim in Rising Water

ניתנת לך רשת n × n של גבהים, שבה מופיע כל מספר מ־0 עד n²-1 בדיוק פעם אחת, כרשימה של שורות. הגשם מתחיל בזמן 0, ובזמן 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 המסלול הראשון נמצא מתחת למים, ולכן התשובה היא 2.

lock icon+13 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

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

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

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

2