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

二分查找----2.搜索二维矩阵

题目链接

/**

        方案一:

            每行都是递增的,对每行进行二分,逐行查找;效率不高,每次搜索只能控制列无法兼顾到行,行被固定存在不必要的搜索

        方案二:

            从右上或左下顶点出发,以右上为例,向左迭代列减小,向下迭代行增大;效率更高避免重复搜索

*/

class Solution {/**方案一: 每行都是递增的,对每行进行二分,逐行查找;效率不高,每次搜索只能控制列无法兼顾到行,行被固定存在不必要的搜索方案二:从右上或左下顶点出发,以右上为例,向左迭代列减小,向下迭代行增大;效率更高避免重复搜索*/public boolean searchMatrix(int[][] matrix, int target) {int row = matrix.length;int col = matrix[0].length;/** 对每行进行二分for(int i = 0; i < row; i++) {int left = 0;int right = col - 1;//单次二分while(left <= right) {int mid = (left + right) >>> 1;if(matrix[i][mid] == target) {return true;} else if(matrix[i][mid] < target) { //淘汰左半区left = mid + 1;} else { //淘汰右半区right = mid - 1;}}}return false;*///从右上开始,向左/下搜索int x = 0, y = col - 1;while(y >= 0 && x < row) {if(matrix[x][y] == target) {return true;} else if(matrix[x][y] < target) { //偏小,向下搜索x++;} else { //偏大,向左搜索y--;}}return false;}}

http://www.dtcms.com/a/293693.html

相关文章:

  • (13)机器学习小白入门YOLOv:YOLOv8-cls中用TensorBoard实时监控指标
  • 深入浅出理解 Reactor:响应式编程的利器​
  • Github上传文件流程图
  • Docker 应用数据备份、迁移方案
  • Redis原理之分布式锁
  • 武德物业和浑元科技-《软件方法》第2章业务建模之愿景03
  • Oracle物化视图详解
  • 计算机网络第四章(4)——网络层《无分类编址CIDR、路由聚合》
  • ESP32-CAM实战:DIY基于OpenAI的AI视觉识别相机
  • 校园后勤服务平台小程序的设计与实现
  • Android埋点实现方案深度分析
  • 新手向:Idea的使用技巧
  • Android 架构演进:从 MVC 到 MVVM 的设计之道
  • SpringCloud seata全局事务
  • python在windows电脑找回WiFi密码
  • LinkedList的模拟实现+LinkedList和ArrayList的区别
  • 使用 Maven 的 `maven-assembly-plugin` 插件打包zip
  • UE5实现NPC头部朝向玩家功能
  • 旧手机部署轻量级服务器
  • HakcMyVM-Luz
  • 解构未来金融:深入剖析DeFi与去中心化交易所(DEX)的技术架构
  • ZooKeeper在Hadoop中的协同应用:从NameNode选主到分布式锁实现
  • CSS 基础
  • Web 服务器和Web 中间件
  • Apache POI 介绍与使用指南
  • 思路探索:当大型语言模型遇见数据分析的现实挑战
  • 利用中间件实现任务去重与分发精细化:股吧舆情数据采集与分析实战
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-最近七天微博发布量实现
  • java设计模式 -【装饰器模式】
  • C study notes[3]