当前位置: 首页 > article >正文

leetcode hot 100 -搜索二维矩阵

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

  • 每行中的整数从左到右按非严格递增顺序排列。
  • 每行的第一个整数大于前一行的最后一个整数。

给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 100
  • -104 <= matrix[i][j], target <= 104

代码 二分的两种写法

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        // 这是一个在二维矩阵查找目标值的题       target       采用二分,将二维矩阵变成一维
        int x=matrix.length;
        int y=matrix[0].length;
        // 开区间二分
        int l=-1;
        int r=x*y;
        while(l+1<r){
            int mid=(l+r)>>>1;
            int temp=matrix[mid/y][mid%y];
            if(temp==target) return true;
            else{
                if(temp>target){
                    r=mid;
                }
                else{
                    l=mid;
                }
            }
        }
        return false;
        
    }
    //  int l=0;
    //     int r=x*y-1;
    //     //闭区间二分
    //     while(l<=r){
    //        int mid=l+(r-l)/2;
    //        int temp=matrix[mid/y][mid%y];
    //        if(temp==target){
    //         return true;
    //        }
    //        else{  //目标值比现在值大
    //              if(temp>target){
    //                  r=mid-1;
    //              }
    //              else{
    //                  l=mid+1;
    //              }
    //        }
    //     }
    //     return false;
}


http://www.kler.cn/a/512209.html

相关文章:

  • 深入探索Python人脸识别技术:从原理到实践
  • 七大排序算法
  • 学习记录之原型,原型链
  • React 中hooks之useReducer使用场景和方法总结
  • oneplus3t-lineageos-16.1编译-android9,
  • OSI七层协议——分层网络协议
  • 微服务学习-Seata 解决分布式事务
  • aosp系统源码aidl文件如何查看对应生成的java文件-安卓系统开发实战小技巧分享
  • pcm | Parity Check Matrix(奇偶校验矩阵)
  • Linux 网络 序列化与反序列化~
  • 电脑如何访问手机文件?
  • 以太坊深入解析:概念与原理全面剖析
  • ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档
  • 将IDLE里面python环境pyqt5配置的vscode
  • 黑马点评之导入初始项目(java)
  • [八省联考 2018] 制胡窜
  • 畅游Diffusion数字人(14):基于3D人体网格的语音驱动手势视频生成 ECCV 2024
  • 如何使用C++来实现OPENAI协议通过OLLAMA来与AI大模型通信
  • 搭建一个基于Spring Boot的外贸平台
  • browser-use 的简单使用
  • [Datawheel学习]用Llama-index创建Agent、数据库对话Agent和RAG接入Agent
  • Python采集modBus协议数据
  • Linux网络IOv1.1介绍-纯PDF版
  • MySQL 中单独获取已知日期的年月日
  • 直驱式风电储能制氢仿真模型matlab/simulink
  • Type-C充电与智能家居的结合