Problem
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.
Example
Input ::
[
[1,2,3,4],
[1,2,0,4],
[1,0,3,4],
[1,2,3,4]
]
Output ::
[
[1,2,0,4],
[1,2,0,4],
[0,0,0,0],
[1,2,0,4]
]
JavaScript Code
function setZeroes(matrix) { var firstRowZero = false; var firstColumnZero = false; //set first row and column zero or not for(var i=0; i<matrix.length; i++){ if(matrix[i][0] == 0){ firstColumnZero = true; break; } } for(var i=0; i<matrix[0].length; i++){ if(matrix[0][i] == 0){ firstRowZero = true; break; } } //mark zeros on first row and column for(var i=1; i<matrix.length; i++){ for(var j=1; j<matrix[0].length; j++){ if(matrix[i][j] == 0){ matrix[i][0] = 0; matrix[0][j] = 0; } } } //use mark to set elements for(var i=1; i<matrix.length; i++){ for(var j=1; j<matrix[0].length; j++){ if(matrix[i][0] == 0 || matrix[0][j] == 0){ matrix[i][j] = 0; } } } //set first column and row if(firstColumnZero){ for(var i=0; i<matrix.length; i++) matrix[i][0] = 0; } if(firstRowZero){ for(var i=0; i<matrix[0].length; i++) matrix[0][i] = 0; } return matrix; }
0 comments:
Post a Comment