java
74. 搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵:
每行中的整数从左到右按非严格递增顺序排列。
每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
尝试写了更快的代码,但是通过不了所有的测试案例。最后写了暴力解法
java
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int r = matrix.length;
int c = matrix[0].length;
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
if(matrix[i][j]==target){
return true;
}
}
}
return false;
}
}
官方解法2还是不错的,把二维数据转换为一维数组,再用常见的二分法优化
java
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length, n = matrix[0].length;
int low = 0, high = m * n - 1;
while (low <= high) {
int mid = (high - low) / 2 + low;
int x = matrix[mid / n][mid % n];
if (x < target) {
low = mid + 1;
} else if (x > target) {
high = mid - 1;
} else {
return true;
}
}
return false;
}
}
作者:力扣官方题解
链接:https://leetcode.cn/problems/search-a-2d-matrix/solutions/688117/sou-suo-er-wei-ju-zhen-by-leetcode-solut-vxui/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。