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

原创 2015年07月07日 21:56:48

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

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

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

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;
				}
			}
		}
	}
}


JAVA之删除数组中某个元素值

JAVA之删除数组中某个元素值
  • netuser1937
  • netuser1937
  • 2017年01月21日 13:23
  • 11226

程序员面试金典: 9.1数组与字符串 7若M*N矩阵中某个元素为0,则将其所在行与列清零

#include #include using namespace std; const int MAXSIZE = 100; int matrix[MAXSIZE][MAXSIZE]; /*...
  • qingyuanluofeng
  • qingyuanluofeng
  • 2016年12月20日 16:31
  • 322

程序员面试金典1.7:若M*N矩阵中某个元素为0,则将其所在的行与列清零

1.7:编写一个算法,若M*N矩阵中某个元素为0,则将其所在的行与列清零。 咋一看,这个问题很简单:直接遍历整个矩阵,只要发现值为0的元素,就将其所在的行与列清零。不过这种方法有个缺陷:在读取被清零...
  • jsqfengbao
  • jsqfengbao
  • 2015年08月29日 14:25
  • 1879

rotate matrix m*n

rotate a m*n matrix, not in place:void rotate(int row int col, int arr[][row],int rot_arr[][col]) { ...
  • craiglin1992
  • craiglin1992
  • 2015年09月14日 09:31
  • 128

leetcode 73. Set Matrix Zeroes-矩阵置零|数组

原题链接:73. Set Matrix Zeroes 【思路-Java】T=O(n)|M=O(n) 建立一个大小为 n 的数组,用于记录第 j 列是否出现0 public class Solution...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016年06月03日 16:47
  • 914

《程序员面试金典》--清除二维数组中元素为0所在的行和列

题目描述: 请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零。 给定一个MxN的int[][]矩阵(C++中vector>)mat和矩阵的阶数n,请返回完成操作后的int[]...
  • zdplife
  • zdplife
  • 2015年09月15日 19:17
  • 794

有一个3×4的矩阵,要求输出该矩阵中的最大元素及其所在的行号(行下标)和列号(列下标)。

//算法描述:1 通过二维数组存储矩阵 2 初始化数组中第一个数为最大值,对数组进行循环遍历,与最大值进行比较,如果比最大值大,则将数组中的此值赋给最大值,...
  • qq_14949545
  • qq_14949545
  • 2016年03月25日 18:21
  • 303

数据结构之矩阵实现

数据结构的矩阵实现
  • u012734723
  • u012734723
  • 2017年05月31日 16:03
  • 607

set matrix zero

题意:在一个m*n的矩阵中matrix中,若matrix[i][j]==0 ,就将第i行和第j列的元素都设为0; 思路一:遍历,直观解法,设置两个数组,分别记录行和列的boolean值。 代码:p...
  • u014257192
  • u014257192
  • 2016年10月02日 14:32
  • 73

矩阵中的“马鞍点”,即满足该元素在所在行最小,在所在列最大

#include #define M 4 #define N 4 int main() { int a[M][N]; int i, j, k, c, min; int fl...
  • yushanjin0767
  • yushanjin0767
  • 2013年12月09日 14:08
  • 981
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Java】若MxN矩阵中某个元素为0, 则将其所在的行与列清零
举报原因:
原因补充:

(最多只允许输入30个字)