题解 | 二维数组中的查找
二维数组中的查找
https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param target int整型
* @param array int整型vector<vector<>>
* @return bool布尔型
*/
bool Find(int target, vector<vector<int> >& array) {
int n;
int l=array.size();
int h=array[0].size()-1;
if(array[0].size()==0)
return false;
if(target<array[0][0] or target>array[l-1][h])
return false;
int k=0;
for(int i=0;i<l;i++){
if(array[i][0]>target){
k=i-1;
break;
}
else {
k=i;
}
}
for(int j=0;j<=k;j++){
if(array[j][h]<target)
continue;
int left=0;
int right=h;
int mid;
while (left<=right) {
mid=(left+right)/2;
if(array[j][mid]==target)
return true;
if(array[j][mid]<target){
left=mid+1;
}
if(array[j][mid]>target){
right=mid-1;
}
}
continue;
}
return false;
}
};