Menu
CoddyTech

Spiral Matrix

ניתנת לך מטריצה של מספרים שלמים עם m שורות ו־n עמודות, המיוצגת כרשימה של שורות. החזר את כל הערכים שלה בסדר ספירלי.

התחל בפינה השמאלית העליונה והתקדם ימינה לאורך השורה העליונה, ואז למטה לאורך העמודה הימנית, שמאלה לאורך השורה התחתונה ולמעלה לאורך העמודה השמאלית. המשך להסתובב פנימה בכיוון השעון עד שכל ערך נקרא בדיוק פעם אחת.

פונקציה

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

אילוצים

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

דוגמאות

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

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

challenge icon

שאלת המשך

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

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

מקרה 1

מקרה 2

מקרה 3

קלט

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

צפוי

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]