Open GaiNingMorris opened 4 years ago
No need to separate first column with the rest columns to check if there is zero.
public class QuestionB { public static void main(String[] args) { int[][] matrix = { { 1, 0, 3, 4 }, { 5, 0, 7, 8 }, { 9, 10, 11, 12 } }; setZeros(matrix); for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(); } } public static void nullifyRow(int[][] matrix, int row) { for (int j = 0; j < matrix[0].length; j++) { matrix[row][j] = 0; } } public static void nullifyColumn(int[][] matrix, int col) { for (int i = 0; i < matrix.length; i++) { matrix[i][col] = 0; } } public static void setZeros(int[][] matrix) { boolean rowHasZero = false; // Check if first row has a zero for (int j = 0; j < matrix[0].length; j++) { if (matrix[0][j] == 0) { rowHasZero = true; break; } } // Check for zeros in the rest of the array for (int i = 1; i < matrix.length; i++) { for (int j = 0; j < matrix[0].length; j++) { if (matrix[i][j] == 0) { matrix[i][0] = 0; matrix[0][j] = 0; } } } // Nullify rows based on values in first column for (int i = 1; i < matrix.length; i++) { if (matrix[i][0] == 0) { nullifyRow(matrix, i); } } // Nullify columns based on values in first row for (int j = 0; j < matrix[0].length; j++) { if (matrix[0][j] == 0) { nullifyColumn(matrix, j); } } // Nullify first row if (rowHasZero) { nullifyRow(matrix, 0); } } }
No need to separate first column with the rest columns to check if there is zero.