题解 | #二维数组中的查找#
二维数组中的查找
https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
//判断是否有元素存在
if (array.size() == 0 || array[0].size() == 0) {
return false;
}
//确定二元数组的宽和高:width和height
int height = array.size();
int width = array[0].size();
//逐层搜索,直至找到target
for (int i = 0; i < height; i++) {
int left = 0, right = width - 1, mid = (left + height) / 2;
//二分查找
while (left <= right) {
if (target == array[i][mid]) {
return true;
}
else {
if (target > array[i][mid]) {
left = mid + 1;
mid = (left + right) / 2;
}
else {
right = mid - 1;
mid = (left + right) / 2;
}
}
}
}
return false;
}
};