【Java】若MxN矩阵中某个元素为0, 则将其所在的行与列清零

来源:互联网 发布:php app 用户注册源码 编辑:程序博客网 时间:2024/06/05 06:23

若直接遍历整个矩阵,发现为零的元素就直接将所在行与列清零,这样做有一个陷阱,在读取已被清零的行或列时,读到的全是零,于是所在的行或列都变成零。

很快整个矩阵的所有元素都全部变为零了。

其实我们并不关心具体的行号和列号,反正整行和整列都会被清零,我们可以标记出零元素的行号和列号,根据这个来进行清零

public class setZeros {public void setZero(int[][] matrix){boolean[] row = new boolean[matrix.length];boolean[] column = new boolean[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){row[i] = true;column[j] = true;}}}for (int i = 0; i < matrix.length; i++){for (int j = 0; j < matrix[0].length; j++){if(row[i] || column[j]){matrix[i][j] = 0;}}}}}


0 0
原创粉丝点击