思路:
这道题的话,我们可以从题目中约束数组的条件出发,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,这样我们可以从左上角开始遍历,如果当前元素大于target,那么就把这一列去掉;如果小于则把这一行去掉即可。
代码:
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0) return false;
int i = 0, j = matrix[0].size()-1;
while(i <= matrix.size()-1 && j >=0 )
{
if(matrix[i][j] > target) --j;
else if(matrix[i][j] < target) ++i;
else return true;
}
return false;
}
};