Its simple just you need to keep track in two arrays all the rows with zeros and all the columns with zeros. You then make a second pass of the matrix and set a cell to zero if its row or column is zero.
Sample Program:-
/**
* @author Dixit
*
*/
public class MatrixProblem {
/**
* @param args
*/
public static void main(String[] args) {
int m[][] = { { 1, 2, 0 }, { 3, 4, 5 }, { 6, 7, 8 } };
setZeros(m);
}
public static void setZeros(int[][] matrix) {
int[] row = new int[matrix.length];
int[] column = new int[matrix[0].length];
// Store the row and column index with value 0
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if (matrix[i][j] == 0) {
row[i] = 1;
column[j] = 1;
}
}
}
// Set arr[i][j] to 0 if either row i or column j has a 0
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
if ((row[i] == 1 || column[j] == 1)) {
matrix[i][j] = 0;
}
}
}
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println("\n");
}
}
}
Output:-
0 0 0
3 4 0
6 7 0
Enjoy Programming.
No comments:
Post a Comment