Java中二维数组的length方法

今天遇到一道很简单的算法题

在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数

刚开始是这样写的

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        boolean flag = false;
        for(int i = 0;i < matrix.length;i++)
        {
            for(int j = 0; j < matrix.length;j++)
            {
                if(target == matrix[i][j])
                {
                    flag =  true;
                }
            }
        }
        return flag;
    }
}

自我感觉没问题,点击运行却报出错误

才发现自己竟然不知道二维数组中length方法所表示的含义,这样写如果行列数不一致就通过不了案例

查阅资料总结如下

  • 在一维数组a[ ]中,a.length 方法的意思就是返回这个数组的长度。

    比如a[] = {1,2,3,4,5},则a.length = 5

  • 而在二位数组中,如果直接调用b.length方法,返回的则是b数组的行数,

    如果是b[0].length方法则返回的是0行所代表的长度。

代码更改如下:

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        boolean flag = false;
        for(int i = 0;i < matrix.length;i++)
        {
            for(int j = 0; j < matrix[0].length;j++)
            {
                if(target == matrix[i][j])
                {
                    flag =  true;
                }
            }
        }
        return flag;
    }
}

问题解决