搜索二维矩阵 II
题目链接:搜索二维矩阵 II
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
方法一:二分查找
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
bool ans = false;
int m = matrix.size();
int n = matrix[0].size();
for (int i = 0;i < m;i++) {
if (target < matrix[i][0]) continue;
if (target > matrix[i][n-1]) continue;
int l = -1,r = n;
while (l + 1 < r) {
int mid = (l+r)/2;
if (matrix[i][mid] == target) return true;
else if (matrix[i][mid] > target) r = mid;
else l = mid;
}
}
return false;
}
};方法二:旋转45度
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int i = matrix.size() - 1, j = 0;
while(i >= 0 && j < matrix[0].size())
{
if(matrix[i][j] > target) i--;
else if(matrix[i][j] < target) j++;
else return true;
}
return false;
}
};