leetcode刷题
74. 搜索二维矩阵
题目
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
分析
由于二维矩阵是递增的,将其看作一个一维矩阵即可,然后使用二分法判断内部是否包含target即可。主要写一个方法,将mid转换为二维矩阵的索引即可
代码
public boolean searchMatrix(int[][] matrix, int target) {
int left = 0;
int right = matrix.length * matrix[0].length - 1;
int mid;
int m, n;
while(left<=right && left<matrix.length * matrix[0].length && right>=0){
mid = (left + right) / 2;
m = mid / matrix[0].length;
n = mid - mid / matrix[0].length * matrix[0].length;
if (matrix[m][n]==target)
return true;
else if (matrix[m][n] > target){
right = mid - 1;
}
else {
left = mid + 1;
}
}
return false;
}
结果
时间超过100.00%
内存超过73.20%