题目大意:给出一个二维数组,判断目标数是否在数组中,数组中元素从左到右一次递增,从上到下一次递增。
算法思想:
1.计算出数组的行数和列数。
2.将目标数和数组中右上角的元素比较,如果目标元素小于该数则说明该数所在列中的元素都大于目标数,应该缩小列数;如果目标数大于该数,则说明该数所在的行中所有的数都大于该数,应该增大行数;如果目标数等于该数,则说明目标数在数组中存在。
代码如下:
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m=matrix.size();
if(m==0) return false;
int n=matrix[0].size();
int row=0,column=n-1;
while(row<m&&column>=0){
if(target<matrix[row][column])
--column;
else if(target>matrix[row][column])
++row;
else
return true;
}
return false;
}
};