美文网首页
剑指 offer 面试题3 二维数组中的查找

剑指 offer 面试题3 二维数组中的查找

作者: hou_blog | 来源:发表于2018-12-24 22:12 被阅读0次

    Algorithm Code

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

    思路:写一个例子

    1     2    8    9

    2    4    9    12

    4    7    10    13

    6    8    11    15   

    从上面的数字矩阵可以看出,每一行都是递增,每一列都是递增。比如我们要查找的数字为10, 以第0行 第3列数字9 为例,

    (1) 9 < 10 ,因为9是第一行最大的数字,所以整个第一行都不会有要查找的数字10,从查找范围中删除第0行。

    (2)接着看第1行第3列的数字12, 12  > 10, 因为每列都是递增的,所以第3列没有符合要求的数字,从查找范围中删除第3列。

    (3)接着从第1行第2列数字9开始比较,9 < 10 所以第1行没有符合要求的数字,从查找范围中删除第1行。

    (4)查找范围变为从第2行第2列开始, 数字为10 正好符合要求,查找结束

    总结:数字矩阵右上角的数字,为一行的最大值,一列的最小值,与目标值进行比对,这样就可以直接从查找范围中删除一行或者一列,能够有效的缩小查找范围

    代码如图1所示:

    图1

    相关文章

      网友评论

          本文标题:剑指 offer 面试题3 二维数组中的查找

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