编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
整体思路是尽可能多的排除掉无关 行/列 ,可以从 第一排最后一个/第一列最后一个 开始搜索,这里选择从 第一排最后一个 开始
由于行列规则等价,搜索策略 先按行排除/按列排除 也是等价的,这里选择 按行排除
搜索规则:小于 target 则向左搜索,大于 则向下搜索,可以保证 global search
若超出 矩阵大小 则意味着没有匹配 target,输出 False
class Main {
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length;
if(m == 0) return false;
int n = matrix[0].length;
int x = 0, y = n - 1;
while(x < m && y >= 0) {
if(matrix[x][y] > target) y--;
else if(matrix[x][y] < target) x++;
else return true;
}
return false;
}
}