74. 搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵:每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。
尝试写了更快的代码,但是通过不了所有的测试案例。最后写了暴力解法
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还是不错的,把二维数据转换为一维数组,再用常见的二分法优化
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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。