用两个set记录哪些行列应该被清零,之后按照set中的记录清零即可。
public class Solution {
public void setZeroes(int[][] matrix) {
int m = matrix.length;
if( m == 0 )
{
return;
}
int n = matrix[0].length;
Set<Integer> setX = new HashSet<Integer>();
Set<Integer> setY = new HashSet<Integer>();
for( int i=0;i<m;i++ )
{
for( int j=0;j<n;j++ )
{
if( matrix[i][j] == 0 )
{
setX.add(i);
setY.add(j);
}
}
}
for( int tmp : setX )
{
for( int i=0;i<n;i++ )
{
matrix[tmp][i] = 0;
}
}
for( int tmp : setY )
{
for( int i=0;i<m;i++ )
{
matrix[i][tmp] = 0;
}
}
return ;
}
}