תיאור השאלה
Given an m x n integer matrix, if an element is 0, set its entire row and column to 0. Do it in place.
איך פותרים?
משתמשים בשורה הראשונה ובעמודה הראשונה כסימונים: כל 0 מסמן את תחילת השורה והעמודה שלו. קודם שומרים בצד אם השורה והעמודה הראשונות עצמן מכילות 0, ממלאים את שאר המטריצה לפי הסימונים, ובסוף מטפלים בשורה ובעמודה הראשונות. סיבוכיות: O(m·n) זמן, O(1) זיכרון.
פתרון קוד
JavaScript
Python
function setZeroes(matrix) {
const m = matrix.length;
const n = matrix[0].length;
const firstRowZero = matrix[0].some((v) => v === 0);
const firstColZero = matrix.some((row) => row[0] === 0);
for (let i = 1; i < m; i++) {
for (let j = 1; j < n; j++) {
if (matrix[i][j] === 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
for (let i = 1; i < m; i++) {
for (let j = 1; j < n; j++) {
if (matrix[i][0] === 0 || matrix[0][j] === 0) matrix[i][j] = 0;
}
}
if (firstRowZero) matrix[0].fill(0);
if (firstColZero) for (let i = 0; i < m; i++) matrix[i][0] = 0;
}
לעבור את ראיון העבודה הבא שלך בהצלחה
קורס דיגיטלי מקיף עם +25 שיעורים מעשיים, כשעתיים של וידאו, וליווי של מראיין בכיר.