二分查找-搜索二维矩阵

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

相关推荐
invicinble5 分钟前
这里对java的知识体系做一个全域的介绍
java·开发语言·python
wbs_scy20 分钟前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·开发语言
ss27333 分钟前
食谱推荐系统功能测试如何写?
java·数据库·spring boot·功能测试
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第15题:JDK1.7中HashMap扩容为什么会发生死循环?如何解决
java·开发语言·数据结构·后端·面试·哈希算法
小白小宋1 小时前
【PUSCH第三期】5G NR QC-LDPC编码深度解析:从协议校验矩阵构造到MATLAB完整实现
5g·matlab·矩阵
try2find1 小时前
打印ascii码报错问题
java·linux·前端
014-code1 小时前
CompletableFuture 实战模板(超时、组合、异常链处理)
java·数据库
Nicander1 小时前
多数据源下@transcation事务踩坑
java·后端
それども2 小时前
DELETE 和 TRUNCATE TABLE区别
java·数据库·mysql
sjsjsbbsbsn3 小时前
大模型核心知识总结
java·人工智能·后端