不知道为什么这种难度会是中等题,可能是因为有陷阱?
首先不能边找零边清零,这样做会导致找到清出来的零
那就先遍历一遍把需要清零的行和列标记出来,再遍历一遍清零即可
class Solution {
public void setZeroes(int[][] matrix) {
boolean[] k = new boolean[matrix.length + matrix[0].length];
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < matrix[0].length; j++){
if(matrix[i][j] == 0){
k[i] = true;
k[matrix.length + j] = true;
}
}
}
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < matrix[0].length; j++){
if(k[i] || k[matrix.length + j])
matrix[i][j] = 0;
}
}
}
}