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

二分查找----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.xdnf.cn/news/15996.html

相关文章:

  • docker部署postgresql
  • 美区跨境卖家尾程物流怎么操作?美国跨境物流自发货走什么?
  • 力扣146:LRU缓存
  • DIOR-ViT:用于病理图像癌症分类的差分序数学习视觉Transformer|文献速递-医学影像算法文献分享
  • 基于Python flask的常用AI工具功能数据分析与可视化系统设计与实现,技术包括LSTM、SVM、朴素贝叶斯三种算法,echart可视化
  • LIMO:仅需817样本激活大模型数学推理能力,挑战“数据规模至上”传统范式
  • 传统RNN模型
  • 嵌入式开发学习(第三阶段 Linux系统开发)
  • 2025年6月GESP(C++五级):最大公因数
  • 【多任务YOLO】A-YOLOM
  • 面试题:sql题一
  • Spring Boot环境搭建与核心原理深度解析
  • 嵌入式开发学习———Linux环境下数据结构学习(一)
  • GitHub 上的开源项目 ticktick(滴答清单)
  • Kotlin伴生对象
  • Kotlin 作用域函数 let 的实现原理
  • 什么是检索增强生成(RAG)?
  • 深入浅出控制反转与依赖注入:从理论到实践
  • 社交电商推客系统全栈开发指南:SpringCloud+分润算法+Flutter跨端
  • 深度学习篇---车道线循迹
  • CMake实践:CMake3.30版本之前和之后链接boost的方式差异
  • Pulsar存储计算分离架构设计之Broker无状态
  • linux: tar解压之后属主和属组不是当前用户问题
  • [c++11]constexpr
  • MCP消息协议和传输协议(Java角度)
  • 【数学建模|Matlab】Matlab「基础知识」和「基础操作」
  • es搜索实现既能模糊查询又能分词查询
  • Linux部署.net Core 环境
  • 8.4 Java 原生 TCP Socket 实现 HTTP 请求解析和请求分发
  • Dify接入MCP案例1:基于Chatflow旅行、吃饭、新闻、学习的AI智能体