二分查找-搜索二维矩阵

74.搜索二维矩阵

java 复制代码
给你一个满足下述两条属性的 m x n 整数矩阵:

每行中的整数从左到右按非严格递增顺序排列。
每行的第一个整数大于前一行的最后一个整数。
给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

输入 :二维数组,目标值
输出 :布尔
思路 :一次二分查找,将二维数组看成是一个一维数组,然后进行二分查找

细节实现:

二分查找的头为0,尾为数组的元素个数,中间值使用matrix[mid/n][mid%n]

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length;
        int n = matrix[0].length;
        int left = 0;
        int right = m * n - 1;
        while(left <= right){
            int mid = (left + right) / 2;
            int x = matrix[mid / n][mid % n];
            if(x < target){
                left = mid + 1;
            }else if(x > target){
                right = mid - 1;
            }else{
                return true;
            }
        }
        return false;
    }
}

注意在while循环中left <= right

相关推荐
刘一说8 小时前
Java 中实现多租户架构:数据隔离策略与实践指南
java·oracle·架构
beata9 小时前
Java基础-9:深入 Java 虚拟机(JVM):从底层源码到核心原理的全面解析
java·后端
SimonKing9 小时前
分享一款可以管理本地端口的IDEA插件:Port Manager
java·后端·程序员
索荣荣9 小时前
Maven配置文件(pom.xml)终极指南
java·开发语言
AI科技星9 小时前
从ZUFT光速螺旋运动求导推出自然常数e
服务器·人工智能·线性代数·算法·矩阵
代码栈上的思考9 小时前
SpringBoot 拦截器
java·spring boot·spring
送秋三十五9 小时前
一次大文件处理性能优化实录————Java 优化过程
java·开发语言·性能优化
雨中飘荡的记忆9 小时前
千万级数据秒级对账!银行日终批处理对账系统从理论到实战
java
jbtianci9 小时前
Spring Boot管理用户数据
java·spring boot·后端
Sylvia-girl9 小时前
线程池~~
java·开发语言