题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有这个整数?
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; } };