链接:https://leetcode.com/problems/search-a-2d-matrix-ii/
思路
设matrix共m行,以matrix[m-1][0]为左下角,matrix[i][j]为右上角划分查找区域。若matrix[i][j] = target,查找成功;若matrix[i][j] > target,则此点正下方的点都大于target,切去这部分,即j–;若matrix[i][j] < target,则此点正左方的点都小于target,切去这部分,即i++。
代码
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = matrix.size();
if(m == 0) return false;
int j = matrix[0].size() - 1;
for(int i = 0; i < m; i++) {
vector<int> &row = matrix[i];
while(j >= 0) {
if(row[j] == target) {
return true;
} else if(row[j] > target) {
j--;
} else {
break;
}
}
}
return false;
}
};