题目出处:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/
分析:对于矩阵中的任意一个元素,若该元素的值大于target,则该元素的右下角矩阵中所有的元素都大与target;若该元素的值小于target,则该元素的左上角矩阵中所有的元素都小于target。
思路:根据以上分析得出的规律,得出两种方法:从右上点出发,若当前元素的值大于target,则列号减一;若当前元素的值小于target,则行号加一。
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
int m = matrix.size();
if(m == 0){
return false;
}
int n = matrix[0].size();
int raw = 0;
int col = n-1;
while(raw < m && col >=0){
if(matrix[raw][col] > target){
--col;
}
else if(matrix[raw][col] < target){
++raw;
}
else{
return true;
}
}
return false;
}
};