思路
- 设置两个标记数组,分别记录该被置零的行和列
- 先遍历一遍矩阵,当出现0时,就将对应行和列的标识置为true
- 然后分别遍历行和列,查看对应行和列的标识是否为true,如果为真,则将该行或列置为零
代码实现(java)
class Solution {
public void setZeroes(int[][] matrix) {
int r = matrix.length;
int c = matrix[0].length;
boolean[] row = new boolean[r];
boolean[] col = new boolean[c];
for(int i = 0; i < r; i++) {
for(int j = 0; j < c; j++) {
if(matrix[i][j] == 0) {
row[i] = true;
col[j] = true;
}
}
}
for(int i = 0; i < r; i++) {
if(row[i]) {
for(int j = 0; j < c; j++) {
matrix[i][j] = 0;
}
}
}
for(int i = 0; i < c; i++) {
if(col[i]) {
for(int j = 0; j < r; j++) {
matrix[j][i] = 0;
}
}
}
}
}