Untitled
unknown
plain_text
a year ago
2.3 kB
29
Indexable
class Solution {
public:
void setZeroes(vector<vector<int>>& mat ) {
// STORE NUMBER OF ROWS
int rows = mat.size();
// STORE NUMBER OF COLUMNS
int cols = mat[ 0 ].size();
// FLAGS TO CHECK FIRST ROW AND COLUMN
bool fcol = false;
bool frow = false;
// CHECK IF THERE IS A ZERO IN THE FIRST COLUMN
for( int i = 0; i < rows; i++ ) {
// SET FCOL TO TRUE IF ZERO IS FOUND
if( mat[ i ][ 0 ] == 0 ) {
fcol = true;
break;
}
}
// CHECK IF THERE IS A ZERO IN THE FIRST ROW
for( int i = 0; i < cols; i++ ) {
// SET FROW TO TRUE IF ZERO IS FOUND
if( mat[ 0 ][ i ] == 0 ) {
frow = true;
break;
}
}
// CHECK OTHER ELEMENTS IN THE MATRIX ( EXCLUDING FIRST ROW AND COLUMN)
for( int i = 1; i < rows; i++ ) {
for( int j = 1; j < cols; j++ ) {
// IF ZERO IS FOUND, SET THE FIRST ELEMENT OF THAT ROW AND COLUMN TO ZERO
if( mat[ i ][ j ] == 0 ) {
mat[ 0 ][ j ] = 0;
mat[ i ][ 0 ] = 0;
}
}
}
// ZERO OUT ROWS BASED ON FIRST COLUMN VALUES ( EXCEPT THE FIRST ROW)
for( int i = 1; i < rows; i++ ) {
if( mat[ i ][ 0 ] == 0 ) {
for( int j = 1; j < cols; j++ ){
mat[ i ][ j ] = 0;
}
}
}
// ZERO OUT COLUMNS BASED ON FIRST ROW VALUES ( EXCEPT THE FIRST COLUMN)
for( int j = 1; j < cols; j++ ) {
if( mat[ 0 ][ j ] == 0 ) {
for( int i = 1; i < rows; i++ ) {
mat[ i ][ j ] = 0;
}
}
}
// ZERO OUT FIRST COLUMN IF FCOL IS TRUE
if( fcol ) {
for( int i = 0; i < rows; i++ ) {
mat[ i ][ 0 ] = 0;
}
}
// ZERO OUT THE FIRST ROW IF FROW IS TRUE
if( frow ) {
for( int j = 0; j < cols; j++ ) {
mat[ 0 ][ j ] = 0;
}
}
return ;
}
};Editor is loading...
Leave a Comment