Menu
CoddyTech

Longest Increasing Path in a Matrix

נתון לך matrix, רשת של מספרים שלמים עם m שורות ו-n עמודות, כרשימה של שורות. מסלול עובר מתא לתא, צעד אחד למעלה, למטה, שמאלה או ימינה בכל פעם (ללא צעדים באלכסון וללא מעבר מעבר לקצוות), ובכל צעד חייבים לנחות על ערך גדול ממש. החזר את מספר התאים במסלול הארוך ביותר כזה. תא יחיד בפני עצמו הוא מסלול של תא אחד.

פונקציה

longestIncreasingPath(matrix: integer-2d-array) → integer
matrixinteger-2d-array
רשת הערכים, כרשימה של שורות באורך שווה
מחזירהinteger
מספר התאים במסלול העולה ממש הארוך ביותר

אילוצים

  • 1 ≤ m, n ≤ 100, כאשר m = matrix.length ו-n = matrix[i].length
  • לכל שורה יש אותו אורך n.
  • 0 ≤ matrix[i][j] ≤ 231-1

דוגמאות

קלט
matrix = [[9, 8, 3], [2, 7, 4], [1, 6, 5]]
פלט
7
הסבר
המסלול 3, 4, 5, 6, 7, 8, 9 יורד לאורך העמודה הימנית, פונה שמאלה לאורך השורה התחתונה, עולה לאורך העמודה האמצעית ופונה שמאלה אל ה־9 שבפינה: 7 תאים. הערך הקטן ביותר מצליח פחות: מ־1 המסלולים הטובים ביותר הם 1, 2, 7, 8, 9 ו־1, 6, 7, 8, 9, עם 5 תאים בכל אחד.

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

challenge icon

שאלת המשך

האם תוכל גם להחזיר את התאים של אחד המסלולים הארוכים ביותר, ולא רק את אורכו?

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

מקרה 1

מקרה 2

מקרה 3

קלט

matrix = [[9, 8, 3], [2, 7, 4], [1, 6, 5]]

צפוי

7