73. Set Matrix Zeroes(js)
73. Set Matrix Zeroes
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in-place.
Example 1:
Input: [ [1,1,1], [1,0,1], [1,1,1] ] Output: [ [1,0,1], [0,0,0], [1,0,1] ]
Example 2:
Input: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] Output: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ]
题意:给定一个二维数组,数字0所在行,列都变为0,返回转化过的数组
代码如下:
/** * @param {number[][]} matrix * @return {void} Do not return anything, modify matrix in-place instead. */ //查找每个元素,若为0在该元素的行首和列首设为0,如果行首或者列首存在未0的元素,利用两个bool值的变量检测 //然后再遍历数组 var setZeroes = function(matrix) { //第一行是否有0 var row0=false; //第一列是否有0 var col0=false; //行数 var rowLen=matrix.length; //列数 var colLen=matrix[0].length; //第一行是否有为0的项 for(var i=0;i<colLen;i++){ if(matrix[0][i]==0){ row0=true; break; } } //第一列是否有0的项 for(var i=0;i<rowLen;i++){ if(matrix[i][0]==0){ col0=true; break; } } //检测其他项 for(var i=1;i<rowLen;i++){ for(var j=1;j<colLen;j++){ if(matrix[i][j]==0){ matrix[0][j]=matrix[i][0]=0; } } } //检测每一行首和列首是否有0 for(var i=1;i<rowLen;i++){ for(var j=1;j<colLen;j++){ if(matrix[i][0]==0 || matrix[0][j]==0){ matrix[i][j]=0; } } } //判断行首,列首本身是否有0 if(row0){ for(var i=0;i<colLen;i++){ matrix[0][i]=0; } } if(col0){ for(var i=0;i<rowLen;i++){ matrix[i][0]=0; } } };