package com.anuragkapur.ctci.arraysandstrings; /** * @author: anuragkapur * @since: 07/05/2014 */ public class Prob1_7_AllZeros { /** * Run time complexity: O(mn), where m is number of rows and n is number of columns * Space complexity:O(m+n), 2 additional 1d arrays are used. * * @param a * @return */ public static int[][] replaceMatrixElements(int a[][]) { int rows[] = new int[a.length]; int columns[] = new int [a[0].length]; for (int i=0; i<a.length; i++) { for(int j=0; j<a[i].length; j++) { if(a[i][j] == 0) { rows[i] = 1; columns[j] = 1; } } } for (int i=0; i<rows.length; i++) { if (rows[i] == 1) { for (int j=0; j<a[i].length; j++) { a[i][j] = 0; } } } for (int i=0; i<columns.length; i++) { if (columns[i] == 1) { for (int j=0; j<a.length; j++) { a[j][i] = 0; } } } return a; } public static void printMatrix(int matrix[][], int m, int n) { for(int i=0; i<m; i++) { for(int j=0; j<n; j++) { System.out.print(matrix[i][j] + " "); } System.out.println(""); } } public static void main(String[] args) { int m = 4, n = 4; int matrix[][] = new int[m][n]; for(int i=0; i<m; i++) { for (int j=0; j<n; j++) { matrix[i][j] = 1; } } matrix[2][1] = 0; matrix[0][3] = 0; System.out.println("Before"); printMatrix(matrix, m, n); System.out.println(matrix.length + " :: " + matrix[0].length); replaceMatrixElements(matrix); System.out.println("After"); printMatrix(matrix, m, n); } }