🤖המדריך להייטיקיסט המתחיל
בינוניLeetCode #73

Set Matrix Zeroes

עשויה להישאל ב:MicrosoftAmazonMeta

תיאור השאלה

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;
}
Book Cover

לעבור את ראיון העבודה הבא שלך בהצלחה

קורס דיגיטלי מקיף עם +25 שיעורים מעשיים, כשעתיים של וידאו, וליווי של מראיין בכיר.

התחל עכשיו ב-149 ₪ בלבד! 🚀