二分查找-搜索二维矩阵

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

相关推荐
熊文豪10 分钟前
Java+Selenium+快代理实现高效爬虫
java·爬虫·selenium·隧道代理·快代理
purrrew1 小时前
【Java ee 初阶】多线程(8)
java·java-ee
TPBoreas4 小时前
Jenkins 改完端口号启动不起来了
java·开发语言
金斗潼关4 小时前
SpringCloud GateWay网关
java·spring cloud·gateway
秋名RG5 小时前
深入解析建造者模式(Builder Pattern)——以Java实现复杂对象构建的艺术
java·开发语言·建造者模式
eternal__day5 小时前
Spring Boot 实现验证码生成与校验:从零开始构建安全登录系统
java·spring boot·后端·安全·java-ee·学习方法
陈大爷(有低保)6 小时前
swagger3融入springboot
java
weixin_376934638 小时前
JDK Version Manager (JVMS)
java·开发语言
月月大王8 小时前
easyexcel导出动态写入标题和数据
java·服务器·前端
大G哥10 小时前
Kotlin Lambda语法错误修复
android·java·开发语言·kotlin