思路:直接对矩阵进行遍历,遇到0便将其所在的行和列置零,置零前要标记出行列中本身已是0 的位置。
代码:
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length;//行
int n = matrix[0].length;//列
boolean [][] b = new boolean[m][n];//标记数组,区分数列中的0是原先就有的还是后来改的。
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == 0 && b[i][j] == false) {
for (int k = 0; k < m; k++) {
if (matrix[k][j] != 0) {
matrix[k][j] =0;
b[k][j] = true;
}
}
for (int p = 0; p < n; p++) {
if (matrix[i][p] != 0) {
matrix[i][p] =0;
b[i][p] = true;
}
}
}
}
}
}
}