publicclassSolution{publicvoidsetZeroes(int[][]matrix){intm=matrix.length;intn=matrix[0].length;Boolean[]rows=newBoolean[m];Boolean[]cols=newBoolean[n];for(inti=0;i
2 回答
倚天杖
TA贡献1828条经验 获得超3个赞
你的rows是一个一维数组,cols是另一个一维数组,一共可以保存m+n个数据。但是下面用的是二重循环,那么一般应该是m*n个数据,所以,再思考一下。又看了下题,你的定义是没错的,第一个二重循环找点也没错。不过后面设置0的时候就错了,应该分别按行和按列,使用两个二重循环来设置。一个是某行有0的时候,循环处理这一行的每一列,另一个是某列为0的时候,循环处理这一列的每一行……给你一个JS的参考(算法并非最优,但是相对较好理解)/***@param{number[][]}matrix*@return{void}Donotreturnanything,modifymatrixin-placeinstead.*/varsetZeroes=function(matrix){constrowCount=matrix.length;constcolCount=rowCount&&matrix[0].length;constrowMarks=[];constcolMarks=[];for(leti=0;ifor(letj=0;j if(matrix[i][j]===0){ rowMarks[i]=true;colMarks[j]=true;}}}for(leti=0;iif(!rowMarks[i]){ continue;}for(letj=0;jmatrix[i][j]=0; }}for(letj=0;jif(!colMarks[j]){ continue;}for(leti=0;imatrix[i][j]=0; }}};
添加回答
举报
0/150
提交
取消