leetcodehot100 矩阵置零
额外使用一个boolean变量用来判断第一列是否为零。另外第一行除了第一个用来标记当前的列是否为零,第一列用来标记当前行是否标记为零
class Solution {
public void setZeroes(int[][] matrix) {
boolean isAllZero = false;//判断第一列是否存在零
for(int i = 0;i<matrix.length;i++){//将记录所有应该置零的地方
for(int j = 0;j<matrix[0].length;j++){
if(matrix[i][j]==0){
if(j==0){
isAllZero = true;
}else{
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
}
for(int i = 1;i<matrix.length;i++){
for(int j = 1;j<matrix[0].length;j++){
if(matrix[i][0]==0||matrix[0][j]==0){
matrix[i][j] = 0;
}
}
}
for(int i = 0;i<matrix[0].length;i++){
if(matrix[0][0]==0){
matrix[0][i] =0;
}
}
if(isAllZero){
for(int i = 0;i<matrix.length;i++){
matrix[i][0] =0;
}
}
}
}