编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 13输出: false
class Solution {
public:
bool searchMatrix(vector<vector<
int>>& matrix,
int t) {
if(!matrix.size()||!matrix[
0].size())
return false;
int n=matrix.size(),m=matrix[
0].size();
int l=
0,r=n*m-
1;
while(l<
r){
int mid=l+r>>
1;
if(matrix[mid/m][mid%m]>=t)r=
mid;
else l=mid+
1;
}
if(matrix[l/m][l%m]==t)
return true;
return false;
}
};
转载于:https://www.cnblogs.com/programyang/p/11205251.html