leetcode 74 搜索二维矩阵

题目链接
本来没想做这个题的,但是想做其他题的hexo new的时候不小心new错了名字,所以就顺便一写

这个题目不知道怎么混到中等题里的,就是个简单的二分搜索,只不过从用一维数组改成了二维数组

如果传入的是类似于 int mat[M][N] 这样的二维数组,直接按一位数组来取就好了,因为底层其实就是个一维数组

如果传入的是vector,则需要做一下转换,初始的left依然是0,right则是M*N-1,算出来的mid需要转换为矩阵的行号和列号(具体转换方式可以看下面代码)

由于比较简单就不多啰嗦了,下面是代码,后面可能这种披着中等题的简单题或者思路比较直白的题就不更了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int m = matrix.size();
int n = matrix[0].size();

int l=0;
int r = m*n-1;
while(l<=r){
int mid=(r-l)/2+l;
int row = mid/n;
int col = mid%n;
if(matrix[row][col]==target) return true;
if(matrix[row][col]>target){
r = mid-1;
}else{
l=mid+1;
}
}
return false;
}
};