方法一:暴力法
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
for(int i=0;i<matrix.size();i++){
for(int j=0;j<matrix[0].size();j++){
if(matrix[i][j]==target)
return true;
}
}
return false;
}
};
方法二:
从右上角开始遍历,不断压缩搜索范围。
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
if(matrix.empty())
return false;
int n=0,m=matrix[0].size()-1;
while(m>=0 && n<matrix.size()){
if(target<matrix[n][m]) //列--
--m;
else if(target>matrix[n][m]) //行++
++n;
else
return true; //target==matrix[n][m]
}
return false;
}
};