关闭

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

1408人阅读 评论(0) 收藏 举报
分类:

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

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

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

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:128151次
    • 积分:3175
    • 等级:
    • 排名:第11273名
    • 原创:180篇
    • 转载:107篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论