美文网首页
面试题4

面试题4

作者: Yaan9 | 来源:发表于2021-02-17 10:08 被阅读0次

剑指 Offer 04. 二维数组中的查找

在一个 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。

题解

首先选数组右上角的数字。如果该数字等于要查找的数字,则查找过程结束,返回该数字;如果该数字大于要查找的数字,则剔除这个数字所在的列;如果该数字小于要查找的数字,则剔除该数字的行。这样,每一步都能缩小查找返回,直到找到所要找的数字,或者查找返回为空,查找失败。

    public boolean findNumberIn2DArray(int[][] matrix, int target) {
        if (matrix == null || matrix.length == 0) {
            return false;
        }
        int m = matrix.length, n = matrix[0].length;
        int row = 0, col = n - 1;
        while (row < m && col >= 0) {
            if (matrix[row][col] > target) {
                col--;
            } else if (matrix[row][col] < target) {
                row++;
            } else {
                return true;
            }
        }
        return false;
    }

相关文章

  • this的指向的面试题

    面试题1 面试题2 面试题3 面试题4

  • 面试材料

    面试经验 面试题1 面试题2 面试题3 面试题4 面试题5 面试题6――数据结构 面试题7――网络 面试题8――汇...

  • 回答 | 4道过滤菜鸟的iOS面试题

    回答 | 4道过滤菜鸟的iOS面试题 回答 | 4道过滤菜鸟的iOS面试题

  • Android 面试BAT大厂

    主要分为以下几部分: (1)java面试题 (2)Android面试题 (3)混合开发面试题 (4)高端技术面试题...

  • Android 面试BAT大厂

    主要分为以下几部分: (1)java面试题(2)Android面试题(3)混合开发面试题(4)高端技术面试题(5)...

  • android面试题和答案1

    主要分为以下几部分: (1)java面试题(2)Android面试题(3)混合开发面试题(4)高端技术面试题(5)...

  • PHP之我是基础二你造嘛?

    我才不是什么面试题,别想宠幸我>_< 1.include和require区别 2.面试题 3.面试题 4.面试题 ...

  • Android开发MONKEY之常见面试题整理

    主要分为以下几部分: (1)java面试题 (2)Android面试题 (3)高端技术面试题 (4)非技术性问题&...

  • Android面试题与解析

    主要分为以下几部分: (1)java面试题 (2)Android面试题 (3)高级开发技术面试题 (4)跨平台Hy...

  • 2019-10-17

    主要分为以下几部分:(1)java面试题 (2)Android面试题 (3)高级开发技术面试题 (4)跨平台Hyb...

网友评论

      本文标题:面试题4

      本文链接:https://www.haomeiwen.com/subject/zsnvxltx.html