在刷算法提的时候遇到一个问题,
判断二维数组为空的这行代码,出现了数组下标越界的报错
//错误代码
if(matrix == null || matrix[0].length == 0 || matrix.length == 0){
return false;
}
正确代码应该如下
if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
return false;
}
主要原因如下:
二维数组为空,要检查三个部分:
-
一是数组首地址是否为空
-
二是是否为{},也就是matrix.length==0的情况 即行为0
-
三是{{}},这时matrix.length=1,但是matrix[0].length==0 即行为1,列为0
以上必须按照顺序来判断,尤其第二个和第三个不能颠倒
因为如果数组为{},则不存在matrix[0]这样的情况,此时数组下标已经越界
只有满足matrix.length=1(行数=1)才可以去判断 matrix[0].length==0 (列数=0)
题目链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/