item3 二维数组中的查找[剑指offer]

Posted 积少成多

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了item3 二维数组中的查找[剑指offer]相关的知识,希望对你有一定的参考价值。

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有这个整数?

1    2    8  9
2    4    9    12
4    7    10    13
6    8    11    15

 

思路:查找7

从右上角的数组开始判断:9>7,又因为每一列从上到下递增,所以这一列淘汰

1    2    8  9
2    4    9    12
4    7    10    13
6    8    11    15

 

接着第三列也被排除

1    2    8  9
2    4    9    12
4    7    10    13
6    8    11    15

 

现在右上角为2<7

那么把2所在的行排除掉了    

1    2    8  9
2    4    9    12
4    7    10    13
6    8    11    15

=========

又因为4<7,将4所在的行排除

1    2    8  9
2    4    9    12
4    7    10    13
6    8    11    15

===========

最后右上角的数字就是7了,找到了,返回。

=========

代码:

class Offer{
public:
    bool find_matrix(vector<vector<int> > matrix,int target){
        int cloums = matrix.size();//hang shu
        if(cloums ==0){
            return false;
        }
        int rows = matrix[0].size();//lie shu

        int c = 0;
        int r = rows-1;
        while(r>=0 && c<=cloums-1){
            if(matrix[c][r]==target){
                cout<<"matrix["<<c<<"]["<<r<<"]"<<endl;
                return true;
            }
            else if(matrix[c][r] > target) r--;
            else c++;
        }
        return false;
    }
};

 

以上是关于item3 二维数组中的查找[剑指offer]的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer04二维数组中的查找

Java 剑指offer 二维数组中的查找

[剑指Offer]5.二维数组中的查找

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

剑指offer-2(二维数组中的查找)

[剑指offer] 二维数组中的查找