力扣HOT100 - 74. 搜索二维矩阵

解题思路:

两次二分,第一次定位行,第二次定位列。

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length, n = matrix[0].length;
        int l = 0, r = m - 1;
        
        //定位行
        int row = -1;
        while (l <= r) {
            int mid = l + (r - l) / 2;
            if (matrix[mid][0] <= target && matrix[mid][n - 1] >= target) {
                row = mid;
                break;
            } else if (target < matrix[mid][0]) {
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        }
        if (row == -1) return false;
        
        //定位列
        l = 0;
        r = n - 1;

        while (l <= r) {
            int mid = l + (r - l) / 2;
            //已知行row之后,就按照常规的二分来做
            if (target == matrix[row][mid])
                return true;
            else if (target < matrix[row][mid])
                r = mid - 1;
            else
                l = mid + 1;
        }
        return false;
    }
}

相关推荐

  1. 10074.搜索矩阵 || 列表推导式

    2024-05-09 07:54:08       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-09 07:54:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-09 07:54:08       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-09 07:54:08       82 阅读
  4. Python语言-面向对象

    2024-05-09 07:54:08       91 阅读

热门阅读

  1. 【CV】视频图像滤波技术

    2024-05-09 07:54:08       32 阅读
  2. 静态NAT

    静态NAT

    2024-05-09 07:54:08      35 阅读
  3. 教学目标的四个维度

    2024-05-09 07:54:08       33 阅读
  4. 传参右值应用的好处

    2024-05-09 07:54:08       34 阅读
  5. 用最简单的示例去理解:Dijkstra最短路径算法

    2024-05-09 07:54:08       28 阅读
  6. Spring Boot应用部署 - Tomcat容器替换为Undertow容器

    2024-05-09 07:54:08       31 阅读
  7. spring boot 核心配置文件是什么?

    2024-05-09 07:54:08       36 阅读
  8. Wireshark Lua插件开发实战:应对TCP粘包问题

    2024-05-09 07:54:08       33 阅读
  9. Linux-笔记 常用命令

    2024-05-09 07:54:08       30 阅读