Menu
CoddyTech

Set Matrix Zeroes

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

פונקציה

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

אילוצים

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

דוגמאות

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

שאלת המשך

הגישה הטובה ביותר בהמשך שומרת שני ערכים בוליאניים נוספים. האם אפשר להסתפק באחד, ולתת ל־matrix[0][0] לייצג את השורה הראשונה?

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

בדיקה #1

בדיקה #2

ארגומנט

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

הפלט הצפוי

[[3, 0, 1], [0, 0, 0], [2, 0, 4]]