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

LeetCode Hot100 搜索二维矩阵

给你一个满足下述两条属性的 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

思路

      第一次

        两次二分查找,先找行,再找列,注意数组不要越界。复杂度上logmn

      第二次

         当一维数组做,复杂度同logmn

代码

      第一遍

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int i = 0,j = matrix.size()-1;int m,row;while(i<=j){m = i+ (j-i)/2;if(matrix[m][0] == target)return true;else if(matrix[m][0] > target){j = m-1;}elsei = m+1;}if((row = i-1) < 0)return false;i = 0;j = matrix[0].size()-1;while(i<=j){m = i + (j-i)/2;if(matrix[row][m] == target)return true;else if(matrix[row][m] > target)j = m-1;elsei = m+1;}return false;}
};

         第二遍

class Solution {
public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int i = 0,j = matrix.size()*matrix[0].size()-1;int m,size = matrix[0].size();int row,col;while(i<=j){m = i+ (j-i)/2;row = m/size;col = m%size;if(matrix[row][col] == target)return true;else if(matrix[row][col] > target){j = m-1;}elsei = m+1;}return false;}
};

相关文章:

  • 多线程处理大文本查找字符串出现的次数
  • 使用大型语言模型进行文档解析(附带代码)
  • PyCharm 2024.1最新变化
  • Vue使用FullCalendar实现日历/周历/月历
  • LeetCode 2844.生成特殊数字的最少操作(哈希表 + 贪心)
  • C语言系统调用linux文件系统
  • Linux网络:传输层协议TCP(二)三次挥手四次握手详解
  • Vue 实现电子签名并生成签名图片
  • java学习--枚举
  • scrapy生成爬虫数据为excel
  • XLua 原理分析 三
  • 返回倒数第 k 个节点 - 力扣(LeetCode)
  • 记录|C# winform布局学习
  • ES中的数据类型学习之ARRAY
  • ChatGPT:宽列数据库是什么?
  • 收藏网友的 源程序下载网
  • 【刷算法】从上往下打印二叉树
  • centos安装java运行环境jdk+tomcat
  • Codepen 每日精选(2018-3-25)
  • JavaScript 基础知识 - 入门篇(一)
  • Material Design
  • Puppeteer:浏览器控制器
  • Vultr 教程目录
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 聊聊sentinel的DegradeSlot
  • 前端临床手札——文件上传
  • 前端学习笔记之观察者模式
  • 如何用vue打造一个移动端音乐播放器
  • 湖北分布式智能数据采集方法有哪些?
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • # 透过事物看本质的能力怎么培养?
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #预处理和函数的对比以及条件编译
  • (20050108)又读《平凡的世界》
  • (3)llvm ir转换过程
  • (PADS学习)第二章:原理图绘制 第一部分
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)Linux——Linux常用指令
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (回溯) LeetCode 77. 组合
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (南京观海微电子)——COF介绍
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (一)RocketMQ初步认识
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • .axf 转化 .bin文件 的方法
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .Net面试题4
  • /bin、/sbin、/usr/bin、/usr/sbin