首页 > 编程语言 > 详细

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

时间:2016-06-23 20:45:53      阅读:232      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!