思路:从右上角[0,n-1]开始搜索,如果是target则返回true;如果大于target,则往左走(j-1);如果小于target,则往下走(j+1)。越出边界还没有找到,返回false。
cpp实现:
#include<iostream>
using namespace std;
#include<vector>
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = matrix.size(); // 行
int n = matrix[0].size(); // 列
int i = 0, j = n-1;
while (i<m && j>=0)
{
/* code */
if (matrix[i][j] == target){
return true;
}
else if (matrix[i][j] > target){
j -=1;
}
else if (matrix[i][j] < target){
i +=1;
}
}
return false;
}
};
int main(){
return 0;
}
结果: