用matrix[0][j] 记录第j列是否为0
用matrix[i][0]记录第i行是否为0
因为在0 0 位置有重复,所以新开个变量记录第0行或者第0列
更新的时候先更新从第1行开始和从第1列开始
妙啊 哭了
class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length;
int n = matrix[0].length;
int flag = 1;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(matrix[i][j] ==0){
if(j == 0)
flag = 0;
else matrix[0][j] = 0;
matrix[i][0] = 0;
}
}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(matrix[0][j] == 0 || matrix[i][0] == 0)
matrix[i][j] = 0;
}
}
if(matrix[0][0] == 0)
for(int j=0;j<n;j++)
matrix[0][j] = 0;
if(flag == 0)
for(int i=0;i<m;i++)
matrix[i][0] = 0;
return;
}
}