2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版

1.题目描述


2.思路

方法一:

定义其实坐标,右上角的元素(0,n-1)。进入while循环(注意边界条件,行数小于m,列数要>=0)从右上角开始开始向左遍历(比当前元素target小的元素),向下遍历(比当前元素target大的元素),如果while循环结束都没找到,返回false。

方法二:二分查找

若将矩阵每一行拼接在上一行的末尾,则会得到一个升序数组,我们可以在该数组上二分找到目标元素。可以二分升序数组的下标,将其映射到原矩阵的行和列上。

row = mid / 列数,表示这是第几行;

col = mid % 列数,表示这是该行中的第几个元素。



3.代码实现

方法一:

java 复制代码
class Solution {
      public boolean searchMatrix(int[][] matrix, int target) {
        int m = matrix.length;
        int n = matrix[0].length;

        int row = 0;
        int col = n - 1; // 从右上角开始

        while (row < m && col >= 0) {
            if (matrix[row][col] == target) {
                return true;
            } else if (matrix[row][col] > target) {
                col--; // 往左走
            } else {
                row++; // 往下走
            }
        }

        return false;
    }
}

方法二:

java 复制代码
public class H74 {
    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-left)/2;//防止整数溢出
            //将二维矩阵映射成一维数组
            //当前mid索引对应在矩阵的位置:当前元素的行数=mid/列数. // 将一维下标映射回二维坐标
            int row=mid/n;
            //当前元素的列数=mid/列数
            int col=mid%n;
            if(matrix[row][col]==target)
            {
                return true;
            }else if(target>matrix[row][col])
            {
                left=mid+1;
            }else {
                right=mid-1;
            }

        }
        return false;

    }
    public static void main(String[] args)
    {
        H74 ms=new H74();
        int[][] matrix={{1,3,5,7},{10,11,16,20},{23,30,34,60}};
        int target=11;
        Boolean res=ms.searchMatrix(matrix,target);
        System.out.print(res);
    }
}
相关推荐
临沂GEO2 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白2 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
xier_ran3 小时前
【infra之路】AWQ 详解:激活感知权重保护,让 W4A16 量化精度超越 GPTQ
线性代数·算法·机器学习·量化·infra
荷蒲3 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
数据狐(Datafox)5 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机5 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
Metaphor6926 小时前
使用 Python 读取和删除 Excel 文件属性
python·excel
迷迭香yy6 小时前
Python构建转融券多空识别系统从接口到因子的全流程 IG50免费开源股票数据API接口
开发语言·python·开源
远航计算机7 小时前
GEO自诊断实操手册:你的内容为什么AI搜不到?
人工智能·矩阵·aigc·媒体
月光船幽幽7 小时前
真实即粗糙,光滑是伪造
人工智能·python