Bug1:解决二维数组的判空问题

在刷算法提的时候遇到一个问题,
判断二维数组为空的这行代码,出现了数组下标越界的报错

//错误代码
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/

发布了39 篇原创文章 · 获赞 15 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/sinat_35667067/article/details/104623561