Skip to content

Solution #73 - Jabez/Edited - 17/3/2025 #37

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
What This Code Does:
* Find zeros in the matrix

* If a cell is 0, mark its row and column to be zero later.
* Use the first row & column as markers

* To track if first row and column have zeros we use firstrow and firstcol boolean variables

* Instead of creating extra memory, the first row and column store which rows/columns should be zero.
* Set the marked cells to zero

* Go through the matrix and make elements 0 based on the markers.
* Handle the first row and column separately

If the first row/column originally had a 0, set the entire first row/column to 0.

Imagine this matrix:


1 2 3
4 0 6
7 8 9

After running the code, it becomes:

1 0 3
0 0 0
7 0 9
The 0 at (1,1) caused its entire row and column to be zero.
Comment on lines +1 to +29
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't seem too clear. Could you try doing something like this? https://github.com/Dijkstra-Edu/LeetCode-Solutions/pull/16/files

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
class Solution{
public void SetMatrixZeroes(int[][] matrix) {
boolean firstrow = false, firstcol = false; // Used to check if the first row and first column contain any zeros

// Iterate through the matrix to find zeros
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) { // If an element is 0, mark its row and column in the first row and first column
if (i == 0) firstrow = true; // Mark that the first row has a zero
if (j == 0) firstcol = true; // Mark that the first column has a zero

// Store zero markers in the first row and first column
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}

// Use the markers in the first row and column to set matrix elements to zero
for (int i = 1; i < matrix.length; i++) {
for (int j = 1; j < matrix[0].length; j++) {
if (matrix[i][0] == 0 || matrix[0][j] == 0) {
matrix[i][j] = 0;
}
}
}

// If the first row was marked, set all elements in the first row to zero
if (firstrow) {
for (int j = 0; j < matrix[0].length; j++) {
matrix[0][j] = 0;
}
}

// If the first column was marked, set all elements in the first column to zero
if (firstcol) {
for (int i = 0; i < matrix.length; i++) {
matrix[i][0] = 0;
}
}
}
}