题目要求
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
示例 1:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true
示例 2:
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false
思路
以上只是一种思路的实现方式,我们也可以从左下往右上遍历,思路同以上的方式
代码实现
这种实现方式,是左下往右上的实现方式
public static boolean searchMatrix2(int[][] matrix, int target) {
// 验证参数
if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
return false;
}
int i = matrix.length-1;
int j = 0;
while (i >= 0 && j <= matrix[0].length-1){
if(matrix[i][j] == target){
return true;
} else if(matrix[i][j] > target){
i--;
}else {
j++;
}
}
return false;
}