为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MM们 2019-05-24 18:27:15
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;jif(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;
}
}
};
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 482 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信