2.1.20 Set Matrix Zeroes
描述
Given a m n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Follow up: Did you use extra space?这道题其实不难,关键是要注意顺序,先检查第一行与第一列有无零元素,然后保存之,这样在接下来的处理过程中就可以复用第一行与第一列的信息了
public static void solution2_1_20(int[][] matrix,int m,int n){
int ZeroFirstRow=0;
int ZeroFirstCol=0;
for(int i=0;i<n;i++){
if(matrix[0][i]==0){
ZeroFirstRow=1;
break;
}
}
for(int i=0;i<m;i++){
if(matrix[i][0]==0){
ZeroFirstCol=1;
break;
}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(matrix[i][j]==0){
matrix[i][0]=0;
matrix[0][j]=0;
}
}
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(matrix[i][0]==0||matrix[0][j]==0)
matrix[i][j]=0;
}
}
if(ZeroFirstRow==1){
for(int i=0;i<n;i++)
matrix[0][i]=0;
}
if(ZeroFirstCol==1){
for(int i=0;i<m;i++)
matrix[i][0]=0;
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
System.out.print(matrix[i][j]+" ");
}
System.out.println();
}
}