您的位置:首页 > Web前端

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

2016-06-23 20:03 351 查看
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。

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

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: