刷java算法题出现了空指针错误

publicclassSolution{
publicvoidsetZeroes(int[][]matrix){
intm=matrix.length;
intn=matrix[0].length;
Boolean[]rows=newBoolean[m];
Boolean[]cols=newBoolean[n];
for(inti=0;ifor(intj=0;jif(matrix[i][j]==0){
rows[i]=true;
cols[j]=true;
}
}
}
for(inti=0;ifor(intj=0;jif(rows[i]==true||cols[j]==true)
matrix[i][j]=0;
}
}
}
}
该题是leetcode第73题SetMatrixZeroes,题目如下:Givenamxnmatrix,ifanelementis0,setitsentirerowandcolumnto0.Doitinplace.我的做法是,加一个行数组、一个列数组,来记录哪些行、哪些列有0,但是提交时出现了空指针错误。
MM们
浏览 483回答 2
2回答

倚天杖

你的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;i
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript