题目链接:
题目描述:
思路:
要充分利用矩阵的特征,行递增、列递增,合起来就是对角线递增
所以,可以先遍历对角线元素,如:找到大于、小于target的对角线元素,target应该在这两个元素之间
如:找20,20应该在17到30之间,
对于行列相等的矩阵这样可以,但是对于行列不相等的,这样只能遍历到较小的数,大的部分就不容易找到
所以,可以从大的部分开始遍历,而且也不一定要沿着对角线走,如果比当前的数大,向下走,比当前的数小,向左走
实现代码:
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length , n = matrix[0].length;
int x = 0, y = n-1;
while(x<m && y>=0){
if(target == matrix[x][y]){
return true;
}else if(target < matrix[x][y]){
y--;
}else{
x++;
}
}
return false;
}
}