Set Matrix Zeroes
Input:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
Output:
[
[1,0,1],
[0,0,0],
[1,0,1]
]Input:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
Output:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]Input:
[
[1,1,1],
[1,0,1],
[1,1,1]
]
Output:
[
[1,0,1],
[0,0,0],
[1,0,1]
]Input:
[
[0,1,2,0],
[3,4,5,2],
[1,3,1,5]
]
Output:
[
[0,0,0,0],
[0,4,5,0],
[0,3,1,0]
]class Solution {
public void setZeroes(int[][] matrix) {
boolean firstRowZeroOut = false;
boolean currRowZeroOut = false;
for (int i = 0; i < matrix[0].length; ++i) {
if (matrix[0][i] == 0) firstRowZeroOut = true;
}
for (int r = 1; r < matrix.length; ++r) {
currRowZeroOut = false;
for (int c = 0; c < matrix[0].length; ++c) {
if (matrix[r][c] == 0) {
currRowZeroOut = true;
matrix[0][c] = 0;
}
}
if (currRowZeroOut) zeroOutRow(matrix, r);
}
for (int i = 0; i < matrix[0].length; ++i) {
if (matrix[0][i] == 0) zeroOutCol(matrix, i);
}
if (firstRowZeroOut) zeroOutRow(matrix, 0);
}
private void zeroOutRow(int[][] matrix, int r) {
for (int c = 0; c < matrix[0].length; ++c) matrix[r][c] = 0;
}
private void zeroOutCol(int[][] matrix, int c) {
for (int r = 0; r < matrix.length; ++r) matrix[r][c] = 0;
}
}