64、二分-搜索二维矩阵

devtools/2024/9/24 6:28:51/

思路:

        通过使用二分方式,对于每行进行二分,因为每行的最后一个数小于下一行的第一个数,我们就可以依次二分。首先取出行数N,然后从0-N进行二分,如果mid最后一个数小于目标值说明0-mid中没有,舍弃,从mid+1到N-1行进行寻找。然后在进行二分直到找到或者便利完为止。代码如下:

java">class Solution {public boolean searchMatrix(int[][] matrix, int target) {if (matrix==null||matrix.length==0||matrix[0].length==0){return false;}int N=matrix.length;int M=matrix[0].length;//每一行都是递增序列//每一行第一个数都是大于前一行最后一个数===>每一列都是递增  每一列的数都是大于前一行任意数return process(matrix,M,0,N-1,target);}private boolean process(int[][] matrix, int M, int L, int R, int target) {if (matrix[L][0]>target||matrix[R][M-1]<target){return false;}if (L==R){int[] nums = matrix[L];for (int i = 0; i < nums.length; i++) {if (nums[i]==target){return true;}}return false;}int mid=L+(R-L)/2;if (matrix[L][0]<=target&&matrix[L+(R-L)/2][M-1]>=target){return process(matrix,M,L,mid,target);}else{return process(matrix,M,mid+1,R,target);}}
}


http://www.ppmy.cn/devtools/26953.html

相关文章

为什么在Windows窗体项目中采用三层架构(一个项目加两个类库)

在Windows窗体项目中采用三层架构&#xff08;一个项目加两个类库&#xff09;是软件开发中常用的架构模式&#xff0c;旨在提高应用程序的可维护性、可扩展性和灵活性。这种架构通常包括以下三层&#xff1a; 表示层&#xff08;UI层或前端&#xff09;&#xff1a;这是用户与…

题目 1452: 网络寻路

题目描述: X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包&#xff0c;为了安全起见&#xff0c;必须恰好被转发两次到达目的地。该包可能在任意一个节点产生&#xff0c;我们需要知道该网络中一共有多少种不同的转发路径。 源地址和目标地…

小剧场短剧影视小程序源码_后端PHP

项目运行截图 源码贡献 https://githubs.xyz/boot?app42 部署说明 linux/win任选 PHP版本&#xff1a;7.3/7.2&#xff08;测试时我用的7.2要安装sg扩展 &#xff09; 批量替换域名http://video.owoii.com更换为你的 批量替换域名http://120.79.77.163:1更换为你的 这两个…

3.C++动态内存管理(超全)

目录 1 .C/C 内存分布 2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 3.3 operator new函数 3.4 定位new表达式(placement-new) &#xff08;了解&#xff09; 4. 常…

自定义SpringBoot启动图标

在SpringBoot项目的resources目录下创建banner.txt文件 在https://www.bootschool.net/网站上复制Ascll艺术字&#xff08;图&#xff09;粘贴到banner.txt中保存。 启动项目就会加载 可以修改颜色&#xff0c;和版本号 ${application.version} 输出版本 ${spring-boot.v…

第三十章:docker如何部署openresty

docker如何部署openresty 目标 了解docker 中volumes数据卷的读写控制通过 openresty 配置掌握挂载nginx.confOpenResty OpenResty(又称ngx_openresty)是一个基于Nginx的可伸缩的Web平台,由中国人章亦春发起。它利用了Nginx模块化、可扩展的特性,开发了一系列的增强模块,…

Python 与 TensorFlow2 生成式 AI(五)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十二章&#xff1a;用生成式人工智能玩视频游戏&#xff1a;GAIL 在之前的章节中&#xff0c;我们已经看到如何使用生成式人工智能来生成…

撞库攻击是什么,如何进行有效的防护阻止

在网络威胁领域&#xff0c;暴力破解攻击仍然是网络犯罪分子非常喜爱且有利可图的攻击方法。&#xff0c;黑客通过收集互联网已泄露的用户和密码信息&#xff0c;生成对应的字典表&#xff0c;由于许多用户重复使用相同的用户名和密码&#xff0c;攻击者可以使用撞库攻击获得对…