码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-06-23 20:47:08      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

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

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

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]

标签:

原文地址:http://www.cnblogs.com/li-daphne/p/5612061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!