LeetCode 74 搜索二维矩阵
LeetCode74 搜索二维矩阵
题目描述
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
样例
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]], target = 3
输出:true
输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,50]], target = 13
输出:false
输入:matrix = [], target = 0
输出:false
算法分析
\(O(logn + logm)\)
时间复杂度
Java代码
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix.length == 0 || matrix[0].length==0)
return false;
int n = matrix.length;
int m = matrix[0].length;
//先找在第几行
int l = 0;
int r = n - 1;
while(l < r){
int mid = l + r + 1 >> 1;
if(matrix[mid][0] <= target) l = mid;
else r = mid - 1;
}
int row = r;
l = 0;
r = m - 1;
while(l < r){
int mid = l + r >> 1;
if(matrix[row][mid] >= target) r = mid;
else l = mid + 1;
}
int col = r;
return matrix[row][col] == target;
}
}

浙公网安备 33010602011771号