Menu
CoddyTech

Transpose Matrix

מקבלים מטריצה של מספרים שלמים כרשימה של שורות: matrix[i][j] הוא הערך בשורה i, בעמודה j. יש להחזיר את המטריצה הטרנספוזית שלה: הערך בשורה i, בעמודה j עובר לשורה j, בעמודה i, כך שכל שורה הופכת לעמודה. המטריצה לא חייבת להיות ריבועית: מטריצה בגודל m × n הופכת למטריצה בגודל n × m.

פונקציה

transpose(matrix: integer-2d-array) → integer-2d-array
matrixinteger-2d-array
המטריצה בגודל m × n, כרשימה של m שורות של n מספרים שלמים
מחזירהinteger-2d-array
הטרנספוזיציה בגודל n × m, כרשימה של n שורות של m מספרים שלמים

אילוצים

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

דוגמאות

קלט
matrix = [[1, 2, 3], [4, 5, 6]]
פלט
[[1, 4], [2, 5], [3, 6]]
הסבר
השורה [1, 2, 3] הופכת לעמודה הראשונה, ו־[4, 5, 6] לעמודה השנייה. בקריאה שורה אחר שורה, התוצאה היא [1, 4], [2, 5], [3, 6]: מטריצה בגודל 3 × 2.
challenge icon

שאלת המשך

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

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

בדיקה #1

בדיקה #2

ארגומנט

matrix = [[1, 2, 3], [4, 5, 6]]

הפלט הצפוי

[[1, 4], [2, 5], [3, 6]]