leetcode-74搜索二维矩阵

leetcode刷题

74. 搜索二维矩阵

题目

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。

分析

由于二维矩阵是递增的,将其看作一个一维矩阵即可,然后使用二分法判断内部是否包含target即可。主要写一个方法,将mid转换为二维矩阵的索引即可

leetcode-74搜索二维矩阵_第1张图片

代码
public boolean searchMatrix(int[][] matrix, int target) {
    int left = 0;
    int right = matrix.length * matrix[0].length - 1;
    int mid;
    int m, n;
    while(left<=right && left<matrix.length * matrix[0].length && right>=0){
        mid = (left + right) / 2;
        m = mid / matrix[0].length;
        n = mid - mid / matrix[0].length * matrix[0].length;
        if (matrix[m][n]==target)
            return true;
        else if (matrix[m][n] > target){
            right = mid - 1;
        }
        else {
            left = mid + 1;
        }
    }
    return false;
}
结果

时间超过100.00%

内存超过73.20%

你可能感兴趣的:(leetcode,矩阵,算法,leetcode)