1230
4567
6789
=>
0000
4560
6780
2. Implementation
public static void setZeroes(int[][] matrix)
{
// validate the input
if (matrix == null || matrix.length == 0 || matrix[0].length == 0)
return matrix;
boolean rowFlag = false;
boolean colFlag = false;
// check 1st row
for (int j=0 ; j < matrix[0].length; j++)
{
if ( matrix[0][j] == 0)
{
rowFlag = true;
// NOTE: break
break;
}
}
// check 1st column
for(int i =0 ; i < matrix.length; i++)
{
if (matrix[i][0] == 0)
{
colFlag = true;
// NOTE: break
break;
}
}
// move the rest to the first column and row
//for (int i = 0 ; i < matrix.length; i++)
// NOTE: already check 1st col
for ( int i =1 ; i < matrix.length ; i++)
{
//for (int j = 0 ; j < matrix[0].length; j++)
for (int j = 1; j < matrix[0].length; j++)
{
if (matrix[i][j] == 0 )
{
matrix[0][j] = 0;
matrix[i][0] = 0;
}
}
}
// set Zeroes
for (int i = 0 ; i < matrix.length; i++)
{
for (int j= 0; j < matrix[0].length;j++)
{
if ( matrix[i][0] == 0 || matrix[0][j] == 0)
matrix[i][j] = 0;
}
}
if (rowFlag)
{
for (int j = 0; j < matrix[0].length ; j++)
matrix[0][j] = 0;
}
if (colFlag)
{
for (int i = 0 ; i < matrix.length; i++)
matrix[i][0] = 0;
}
}
3. Similar ones
No comments:
Post a Comment