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

74、搜索二维矩阵

题目:

解答:

两次二分查找即可。如果出现down=-1,说明matrix[0][0]<target 那么所有数都小于target,return false即可。

第一次闭区间查找,最后upper=down+1,在down这一行查找即可。

如果出现upper越界,也就是down指向最后一行,只能说明matrix[m][0]>target,并不能说明最后一行所有数都大于target

第二次二分查找,如果没找到,循环结束后return false,否则找到时return true。

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int m = matrix.size();int n = matrix[0].size();int upper = 0,down = m-1,left=0,right=n-1;while(upper<=down){int mid = upper+(down-upper)/2;if(matrix[mid][0]==target)return true;else if(matrix[mid][0]<target)upper = mid + 1;elsedown = mid - 1;}if(down == -1) return false;while(left<=right){int mid = left+(right-left)/2;if(matrix[down][mid]==target)return true;else if(matrix[down][mid]<target)left=mid+1;else right=mid-1;}return false;}
};

时间复杂度O(log(mn))

空间复杂度O(1)

http://www.lryc.cn/news/590131.html

相关文章:

  • 随机链表的复制数据结构oj题(力口138)
  • Mybatis的SQL编写—XML方式
  • 3分钟实战!用DeepSeek+墨刀AI生成智能对话APP原型图
  • 035_ClaudeCode_MCP_介绍
  • 电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
  • 【数据结构】「栈」(顺序栈、共享栈、链栈)
  • 现代前端开发流程:CI/CD与自动化部署实战
  • 多维动态规划题解——最小路径和【LeetCode】空间优化一维数组
  • 手撕设计模式之消息推送系统——桥接模式
  • Jenkins全方位CI/CD实战指南
  • U3D打包IOS的自我总结
  • 如何选择适合的云手机配置?解决资源不足带来的性能瓶颈
  • Unity Android Logcat插件 输出日志中文乱码解决
  • Kafka 与 RocketMQ 消息确认机制对比分析
  • 深度解析:Python实战京东资产拍卖平台爬虫,从ID抓取到详情数据落地
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • 短剧系统开发:塑造数字娱乐新未来
  • 面试150 二叉树的层序遍历
  • UE5 相机后处理材质与动态参数修改
  • 猫眼娱乐IOS开发一面手撕算法
  • 工业相机GigE数据接口的优势及应用
  • [特殊字符] 第1篇:什么是SQL?数据库是啥?我能吃吗?
  • SQL,在join中,on和where的区别
  • 锁存型霍尔 IC:定义、应用与优势全解析
  • Git问题排查与故障解决详解
  • 前端性能与可靠性工程:前端韧性工程 - 优雅降级与离线支持
  • 《设计模式之禅》笔记摘录 - 7.中介者模式
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘tkinter’问题
  • 网络编程/Java面试/TCPUDP区别
  • 【代码】Matlab鸟瞰图函数