- 从最后一列第一个数开始查找,如果目标值比它大,则删除其所在列,如果目标值比它小,则删除其所在行,如果删除所有行列后仍未找到,则不存在目标值
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if (empty(matrix) || empty(matrix[0])) {
return false;
}
int m = size(matrix);
int n = size(matrix[0]);
int i = m - 1; // 下边界
int j = 0; // 左边界
while (i >= 0 && j <= n - 1) {
if (matrix[i][j] == target) {
return true;
} else if (matrix[i][j] < target) {
++j;
} else {
--i;
}
}
return false;
}
};