讨论/题目交流/剑指offer04题,感觉没问题,但是一直提交报错。/
剑指offer04题,感觉没问题,但是一直提交报错。

在提交剑指offer第四题时,一直通不过。大神们帮看看!

题目如下

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

 

示例:

现有矩阵 matrix 如下:

[
  [1,   4,  7, 11, 15],
  [2,   5,  8, 12, 19],
  [3,   6,  9, 16, 22],
  [10, 13, 14, 17, 24],
  [18, 21, 23, 26, 30]
]
给定 target = 5,返回 true。

给定 target = 20,返回 false。

 

限制:

0 <= n <= 1000

0 <= m <= 1000

代码如下:

class Solution {
    public boolean findNumberIn2DArray(int[][] matrix, int target) {

        if (matrix ==null && matrix.length<1 &&matrix[0].length<1){
            return false;
        }
       //列数
        int cols = matrix.length;//col列
        //行数
        int rows =matrix[0].length;//row行
        int col = 0; // 起始开始的列号
        int row = rows - 1; // 起始开始的行号,即程序从第一列最后一行开始,此时,若目标数比该数字大,列+1,否则行-1;

        while (row>=0&&col>=0&&col<matrix[0].length&&row<rows){
                if(matrix[col][row] == target){
                    return true;
                }else if(matrix[row][col] < target){
                    col++;

                }else {
                    row--;
                }
        }
        return false;
    }
}

执行报错如下,关键我点击执行代码时都可以通过,点击提交就不行。
leecode04.png

第四行应该用 || 而不是用&& 吧。另外,提交时的测试用例比执行代码的多,所以有可能执行代码能通过,提交就过不了

1
展开全部 2 讨论