AlgoMaster Logo

Set Matrix Zeroes

matrix=[[1,1,1],[1,0,1],[1,1,1]]
1public void setZeroes(int[][] matrix) {
2    int m = matrix.length, n = matrix[0].length;
3    boolean firstRowZero = false, firstColZero = false;
4
5    // Check first row and column
6    for (int j = 0; j < n; j++)
7        if (matrix[0][j] == 0) firstRowZero = true;
8    for (int i = 0; i < m; i++)
9        if (matrix[i][0] == 0) firstColZero = true;
10
11    // Use first row/col as markers
12    for (int i = 1; i < m; i++) {
13        for (int j = 1; j < n; j++) {
14            if (matrix[i][j] == 0) {
15                matrix[i][0] = 0;
16                matrix[0][j] = 0;
17            }
18        }
19    }
20
21    // Set zeros based on markers
22    for (int i = 1; i < m; i++) {
23        for (int j = 1; j < n; j++) {
24            if (matrix[i][0] == 0 || matrix[0][j] == 0)
25                matrix[i][j] = 0;
26        }
27    }
28
29    // Handle first row and column
30    if (firstRowZero)
31        for (int j = 0; j < n; j++) matrix[0][j] = 0;
32    if (firstColZero)
33        for (int i = 0; i < m; i++) matrix[i][0] = 0;
34}
0 / 13
012012111101111