编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
还是使用二分法进行查找,首先计算出行数与列数,然后计算出二维数组的中间元素的值x。将它与target进行比较:若x 若x>target,在左边继续查找; 返回true; class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int left = 0;
int m = matrix.length; //行数
int n = matrix[0].length; //列数
int length = m * n;
int right = length -1;
while(left <= right){
int mid = (left + right) /2;
int x = matrix[mid / n][mid % n]; //二维数组中间的值
if(x < target){ //在右边继续找
left = mid + 1;
}else if(x > target) { //在左边继续找
right = mid -1;
}else{
return true;
}
}
return false;
}
}



