您的位置:首页 > 其它

leetcode240. Search a 2D Matrix II

2017-09-11 21:07 453 查看
题目leetcode240. Search a 2D Matrix II

难度等级:medium

思路

实现对每一行的二分查找,和每一列的二分查找就可以了

时间复杂度

O(mlgn)

实现

class Solution {
public:
bool bin(vector<vector<int>>& matrix, int axis, int index, int l, int r, int target) {
// row scan
if(axis == 0){
int mid;
while(l < r) {
mid = l + ((r - l) >> 1);
if (matrix[index][mid] < target)
l = mid + 1;
else
r = mid;
}
return (matrix[index][l] == target) ? true : false;
} else {
int mid;
while(l < r) {
mid = l + ((r - l) >> 1);
if(matrix[mid][index] < target)
l = mid + 1;
else
r = mid;
}
return (matrix[l][index] == target) ? true : false;
}
}
bool searchMatrix(vector<vector<int>>& matrix, int target) {
if(matrix.empty()) return false;
int m, n;
m = matrix.size();
n = matrix[0].size();
if(m < n) {
for(int i = 0; i < m; i++) {
if(bin(matrix, 0, i, 0, n -1, target))
return true;
}
return false;
} else {
for(int i = 0; i < n; i++) {
if(bin(matrix, 1, i, 0, m - 1, target))
return true;
}
return false;
}

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: