问题:写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。
注意事项:在遍历过程中,容易出现所有数据全部为零的情况。
解题思路:遍历数组找到含有零的数据,将他的行和列保存,遍历结束后,再次进行遍历将标记的行和列改为0。下面我们来看代码
public void sw(int[][] matrix){
//新建行数组用来保存哪一行需要变零
Integer[] row = new Integer[matrix.length];
//新建列数组用来保存哪一列需要变零
Integer[] clo = new Integer[matrix[0].length];
for(int i=0;i<matrix.length;i++){
for (int j=0;j<matrix[1].length;j++){
//进行遍历将为零的行和列进行标记
if(matrix[i][j]==0){
row[i]=1;
clo[j]=1;
}
}
}
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[0].length;j++){
//将标记的行和列变为0
if(row[i]==1||clo[j]==1){
matrix[i][j]=0;
}
}
}
}