《剑指offer》二维数组中的查找

原创 2016年05月30日 16:37:17

一、题目描述

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

二、输入描述

array: 待查找的二维数组
target:查找的数字

三、输出描述

查找到返回true,查找不到返回false

四、牛客网提供的类框架

class Solution {
public:
    bool Find(vector<vector<int> > array,int target) {

    }
};

五、解题思路

这道题类似于一维数组的二分查找。由题目可知矩阵是有序的,从左下角看,向上是递减,向右是递增(也可以从右上角看,向左是递减,向下是递增)。

所以从左下角开始或者从右上角开始查找。对于从左下角开始,当查找位置的数比要查找的数大,如果矩阵中该数存在,那么它将在该位置的上方,所以y坐标–;相反如果现在的位置上的书比要查找的数小,那么它将在该位置的右方,所以x坐标++。当所查找的位置超过矩阵的坐标范围,查找失败(数组中不存在该数)。同样也可以通过右上角开始查找。

六、代码

class Solution {
public:
    bool Find(vector<vector<int> > array,int target) {
        int row, column, i, j;
        row = array.size();
        column = array[0].size();
        i = row - 1;
        j = 0;
        while(i >= 0 && j <= column -1)
        {
            if(array[i][j] < target)
            {
                j++;
            }
            else if(array[i][j] > target)
            {
                i--;
            }
            else{
                return true;
            }
        }
        return false;

    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

剑指offer_面试题3_二维数组中的查找(简单问题亦不能忽视)

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

重新解读剑指Offer之3题 二维数组中的查找

首先描述一下问题,存在一个二维数组,每一行数据从左到右递增,每一列数据从上到下递增。给定一个需要查找的参数,问在这个参数是否在二维数组中。关于几种不同算法的解释与实现。...
  • yandmi
  • yandmi
  • 2017年03月08日 18:00
  • 503

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

题目:在一个二维数组中,每一行从左到右递增,每一列从上到下递增,在这个二维数组中,查找给定的数是否存在。 分析:遍历来查找的事这里就不说了,像星爷说的:“像我这么理智的人,怎么会相信这么无稽的事情。...

剑指offer刷题之java实现的二维数组中的查找

/** * * @author 毛二 * @data 2015-8-8 * @comments * 二维数组中的查找。其中二维数组,每行数递增。每列数也递增。 * 那么,二维数...

剑指Offer—— 题3 二维数组中的查找 Java版

题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路: 关键要...
  • RHCDS
  • RHCDS
  • 2015年11月23日 10:29
  • 287

剑指Offer---面试题3:二维数组中的查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排列.请完成一个函数,输入这样的一个二维数组,判断数组中是否含有该整数.分析:例如如下数组,查找7是否存在于该...

剑指Offer--003--二维数组中的查找

链接 牛客OJ:二维数组中的查找 九度OJ:http://ac.jobdu.com/problem.php?pid=1384 GitHub代码:gatiemee/CodingI...
  • gatieme
  • gatieme
  • 2016年04月08日 21:53
  • 1632

剑指Offer—— 二维数组中的查找

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

《剑指offer》——1 二维数组中的查找

二维数组中的查找 参与人数:6536时间限制:1秒空间限制:32768K 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这...

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

目前研三,毕业在即,之前做Android开发,现在想转到后台开发,却发现算法部分太过欠缺,所以就去博客上看别人写的剑指offer题的见解。声明,我这里只是针对别人写的,自己敲一遍代码,然后发表出来,算...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《剑指offer》二维数组中的查找
举报原因:
原因补充:

(最多只允许输入30个字)