/*
* @lc app=leetcode id=74 lang=cpp
*
* [74] Search a 2D Matrix
*/
// @lc code=start
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int N = matrix.size();
if(N <= 0) return false;
int M = matrix[0].size();
if(M <= 0) return false;
int a = bisearchN(0,N,target,matrix);
if(a == -1) return false;
int b = bisearchM(0,M,target,matrix[a]);
if(b == -1) return false;
return true;
}
int bisearchN(int L,int R,int K,vector<vector<int>>& T){
if( L+1 >= R ){
if(T[L][0] <= K) return L;
return L-1;
}
int mid = (L+R)/2;
if(T[mid][0] <= K){
return bisearchN(mid,R,K,T);
}
return bisearchN(L,mid,K,T);
}
int bisearchM(int L,int R,int K,vector<int>& T){
if( L+1 >= R){
if(T[L] == K) return L;
return -1;
}
int mid = (L+R)/2;
if(T[mid] <= K){
return bisearchM(mid,R,K,T);
}
return bisearchM(L,mid,K,T);
}
};
// @lc code=end
No.216 - LeetCode[74] Search a 2D Matrix - 排序矩阵双向二分检索
最新推荐文章于 2025-12-04 16:02:12 发布
498

被折叠的 条评论
为什么被折叠?



