搜索二维矩阵 II - LeetCode 热题 21

大家好!我是曾续缘💗

今天是《LeetCode 热题 100》系列

发车第 21 天

矩阵第 4 题

❤️点赞 👍 收藏 ⭐再看,养成习惯

搜索二维矩阵 II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

示例 1:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true

示例 2:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= n, m <= 300
  • -109 <= matrix[i][j] <= 109
  • 每行的所有元素从左到右升序排列
  • 每列的所有元素从上到下升序排列
  • -109 <= target <= 109
难度:💖💖

解题方法

对于矩阵中的某个点matrix[i][j]来说,观察到向左移动数字减小,向下移动数字增大,类似于二分查找树的性质。同样地,向上移动数字减小,向右移动数字增大,也类似于二分查找树。

如果我们限制只能向左或向下移动,这就相当于在遍历二分查找树;同理,如果限制只能向右或向上移动,也可以看作是在遍历二分查找树。

接下来,我们需要找到二分查找树的根节点,使其包含矩阵中的所有值。可以选择左下角和右上角两个点作为二分查找树的根节点。

以左下角为例:

  • 如果目标值大于当前值,则向上移动。
  • 如果目标值小于当前值,则向右移动。
  • 如果相等,则直接返回 true。
  • 如果移出矩阵范围,说明到达空结点,返回 false。

Code

class Solution {public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length, n = matrix[0].length;int i = 0, j = n - 1; // 右上角while(i < m && j >= 0){if(matrix[i][j] == target){return true;}if(matrix[i][j] > target){j--;}else{i++;}}return false;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/788937.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Word的”交叉引用“和”插入题注“快捷键设置

Word的”交叉引用“和”插入题注“快捷键设置 在MSWord2021中&#xff0c;可以自定义设置快捷键。方法如下&#xff1a;文件-选项-自定义功能区-键盘快捷方式&#xff08;自定义&#xff09;。具体过程如图所示。 最后&#xff0c;按照上述流程将插入题注&#xff08;Insert…

详解 Proxychains4 和 Tor 命令行网络代理的配置及使用方法

使用 tor 保护自己 前置 要求 kali linux 系统开启全局科学上网 安装Proxychains4 并配置 安装 Proxychains4 apt-get install Proxychains4 # 或者 apt install Proxychains4 编辑 配置文件 ┌──(root㉿kali)-[~] └─# whereis proxychains proxychains: /usr/bin/pro…

VMware vCenter Server 8.0U2c - 集中式管理 vSphere 环境

VMware vCenter Server 8.0U2c - 集中式管理 vSphere 环境 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-vcenter-8-u2/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 无耻抄袭者 Yu Tao&#xff0c;请立遁&…

3D模型格式转换工具HOOPS Exchange如何将3D文件加载到PRC数据结构中?

HOOPS Exchange是一款高效的数据访问工具&#xff0c;专为开发人员设计&#xff0c;用于在不同的CAD&#xff08;计算机辅助设计&#xff09;系统之间进行高保真的数据转换和交换。由Tech Soft 3D公司开发&#xff0c;它支持广泛的CAD文件格式&#xff0c;包括但不限于AutoCAD的…

分享高质量嵌入式软件的开发技巧

大家好&#xff0c;今天给大家介绍分享高质量嵌入式软件的开发技巧&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 高质量嵌入式软件的开发技巧涉及多个方面&#xff0c;从设计、…

python -- NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+

报错分析 完整的报错&#xff1a;urllib3 v2 only supports OpenSSL 1.1.1, currently the ssl module is compiled with LibreSSL 2.8.3. See: https://github.com/urllib3/urllib3/issues/3020报错分析&#xff1a;LibreSSL 是 OpenSSL 的一个分支&#xff0c;LibreSSL 2.8.…

Java基础语法(十)| 多态

1. 多态 1.1 什么是多态 多态是继封装、继承之后&#xff0c;面向对象的第三大特性。生活中&#xff0c;比如跑的动作&#xff0c;小猫、小狗和大象,都是动物&#xff0c;跑起来是不一样的。 再比如飞的动作&#xff0c;昆虫、鸟类和飞机&#xff0c;飞起来也是不一样的。 可见…

不同设备使用同一个Git账号

想要在公司和家里的电脑上用同一个git账号来pull, push代码 1. 查看原设备的用户名和邮箱 第1种方法&#xff0c; 依次输入 git config user.name git config user.email第2种方法&#xff0c; 输入 cat ~/.gitconfig2. 配置新设备的用户名和邮箱 用户名和邮箱与原设备保持…

rocketmq管理工具rocketmq-console安装

rocketmq-console是一个图形化管理控制台&#xff0c;提供Broker集群状态查看&#xff0c;Topic管理&#xff0c;Producer、Consumer状态展示&#xff0c;消息查询等常用功能&#xff0c;这个功能在安装好RocketMQ后需要额外单独安装、运行。 中文文档地址&#xff1a;https:/…

【RedHat9.0】引导装载程序GRUB——root密码丢失实例

root用户密码忘记了&#xff1f;&#xff01;&#xff01;&#xff01;怎么办&#xff01;&#xff01;&#xff01; 在Linux系统中&#xff0c;root密码是系统管理员权限的凭证。 如果忘记了root密码&#xff0c;就无法以管理员身份登录系统&#xff0c;这可能会对系统安全和正…

C++核心高级编程 --- 1、内存分区模型 2、引用

文章目录 第一章&#xff1a;1.内存分区模型1.1 程序运行前1.2 程序运行后1.3 new操作符 第二章&#xff1a;2.引用2.1 使用2.2 注意事项2.3 做函数参数2.4 做函数返回值2.5 本质2.6 常量引用 第一章&#xff1a; 1.内存分区模型 4个区域&#xff1a; 代码区&#xff1a;存放…

Python可视化概率统计和聚类学习分析生物指纹

&#x1f3af;要点 &#x1f3af;使用Jupyter Notebook执行Dash 应用&#xff0c;确定Dash输入输出&#xff0c;设计回调函数&#xff0c;Dash应用中包含函数。&#x1f3af;使用Plotly绘图工具&#xff1a;配置图对象选项&#xff0c;​将图转换为HTML、图像。使用数据集绘图…

健身房最重的是前门

你可以将任何你想做的事情 比如 一年读30本书 变成一周读一页 做四天瑜伽 变成拿出瑜伽垫 我知道真正的目的不只是拿出瑜伽垫 我知道我其实是想锻炼身体 这只是某种心理上的把戏 虽然暂时不会得到想要的结果 但退一步往远看 其实是在掌握“持续出现”的习惯 这让我们…

【mysql 第3-10条记录怎么查】

mysql 第3-10条记录怎么查 在MySQL中&#xff0c;如果你想要查询第3到第10条记录&#xff0c;你通常会使用LIMIT和OFFSET子句。但是&#xff0c;需要注意的是&#xff0c;LIMIT和OFFSET是基于结果集的行数来工作的&#xff0c;而不是基于记录的物理位置。这意味着它们通常与某种…

【C++庖丁解牛】高阶数据结构---红黑树详解(万字超详细全面介绍红黑树)

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.红黑树的概念2.红黑…

vue + vite 项目架构笔记---- PC端屏幕自适应方案

背景&#xff1a; 项目中总有很多界面 需要做大小屏幕适配的兼容&#xff0c;那么怎么能够快速实现这一方案呢&#xff0c;SASS的出现是个非常好用的工具&#xff0c;可以通过自定义函数&#xff0c;来实现自动计算。 方案&#xff1a;vue3 vite sass 具体实现细节&#x…

开发环境搭建及驱动移植 2

1 开发环境搭建 前言&#xff1a; STD库-标准外设库 寄存器操作&#xff0c;将一些基本的寄存器操作封装成函数 HAL库-硬件抽象库将这些抽象成了一个抽象层&#xff0c;从使用的角度来看&#xff0c;是与硬件无关的 HAL库优势HAL库是ST未来主推的库&#xff0c;从2015开始ST…

探索Django:打造高效、可扩展的Web应用(终)

10. Django的静态文件管理与部署 配置静态文件路径收集静态文件部署Django应用 在Django应用程序中&#xff0c;静态文件&#xff08;例如CSS、JavaScript、图像等&#xff09;的管理和部署是非常重要的&#xff0c;它们用于美化网页样式、增强用户交互体验等。本节将详细介绍…

STM32重要参考资料

stm32f103c8t6 一、引脚定义图 二、时钟树 三、系统结构图 四、启动配置 &#xff08;有时候不小心短接VCC和GND&#xff0c;芯片会锁住&#xff0c;可以BOOT0拉高试试&#xff08;用跳线帽接&#xff09;&#xff09; 五、最小系统原理图 可用于PCB设计

C++类 单例模式

例子 请看如下的类和调用&#xff1a; 在您提供的代码片段中&#xff0c;CPathPlanMan 类使用了一个单例模式&#xff0c;这意味着这个类只需要一个实例&#xff0c;并且提供了全局访问点来获取这个实例。这通常用于控制对一个类实例的访问&#xff0c;尤其是在创建实例代价昂…