Boolean Matrix
Problem Statement
Given a boolean matrix of size RxC where each cell contains either 0 or 1, modify it such that if a matrix cell matrix[i][j] is 1 then all the cells in its ith row and jth column will become 1.
Example 1
Input :
R = 2, C = 2
matrix[][] = {{1, 0},
{0, 0}}
Output :
1 1
1 0
Explanation : Only cell that has 1 is at (0,0) so all cells in row 0 are modified to 1 and all cells in column 0 are modified to 1.
Example 2
Input :
R = 4, C = 3
matrix[][] = {{ 1, 0, 0},
{ 1, 0, 0},
{ 1, 0, 0},
{ 0, 0, 0}}
Output :
1 1 1
1 1 1
1 1 1
1 0 0
Explanation : The position of cells that have 1 in the original matrix are (0,0), (1,0) and (2,0). Therefore, all cells in row 0,1,2 are and column 0 are modified to 1.
Task
You dont need to read input or print anything. Complete the function booleanMatrix() that takes the matrix as input parameter and modifies it in-place.
Expected Time Complexity : O(R * C).
Expected Auxiliary Space : O(R + C)
Constraints :
1 <= R, C <= 100
1 <= mat[i][j] <= 1
Solutions
Java Solution
class Solution
{
//Function to modify the matrix such that if a matrix cell matrix[i][j]
//is 1 then all the cells in its ith row and jth column will become 1.
void booleanMatrix(int matrix[][])
{
// code here
int row = matrix.length;
int col = matrix[0].length;
int matRow[] = new int[row];
int matCol[] = new int[col];
for(int i=0; i<row; i++) {
matRow[i] = 0;
}
for(int j=0; j<col; j++) {
matCol[j] = 0;
}
for(int i=0; i<row; i++) {
for(int j=0; j<col; j++) {
if(matrix[i][j] == 1) {
matRow[i] = 1;
matCol[j] = 1;
}
}
}
for(int i=0; i<row; i++) {
for(int j=0; j<col; j++) {
if(matRow[i] == 1 || matCol[j] == 1) {
matrix[i][j] = 1;
}
}
}
}
}
0 Comments