Given an m x n
integer matrix
, if an element is 0
, set its entire row and column to 0
’s.
You must do it in place.
Test Cases
Example 1:
1 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
--->
1 | 0 | 1 |
0 | 0 | 0 |
1 | 0 | 1 |
Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]
Output: [[1,0,1],[0,0,0],[1,0,1]]
Example 2:
Input: matrix = [[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]]
Solution
class Solution {
public void setZeroes(int[][] matrix) {
int n = matrix.length, m = matrix[0].length;
boolean rz = false, cz = false;
for(int i=0; i<n; i++) {
if (matrix[i][0] == 0) {
cz = true;
break;
}
}
for(int i=0; i<m; i++) {
if (matrix[0][i] == 0) {
rz = true;
break;
}
}
for(int i=1; i<n; i++) {
for(int j=1; j<m; j++) {
if (matrix[i][j] == 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
for(int i=1; i<n; i++) {
for(int j=1; j<m; j++) {
if (matrix[i][0] == 0 || matrix[0][j] == 0) {
matrix[i][j] = 0;
}
}
}
for(int i=0; i<n; i++) {
if (cz) matrix[i][0] = 0;
}
for(int j=0; j<m; j++) {
if (rz) matrix[0][j] = 0;
}
}
}