力扣hot100-240.搜索二维矩阵2-单调性剪枝详解
LeetCode 240. 搜索二维矩阵 II单调性剪枝详解1. 算法思想这题属于矩阵搜索 / 单调性剪枝也常被称为 Z 字形搜索。它不是普通二分查找每一行、每一列分别有序但整个矩阵按行展开后并不整体有序。例如[ [1, 4, 7], [2, 5, 8], [3, 6, 9] ]按行展开是1, 4, 7, 2, 5, 8, 3, 6, 9其中7后面是2因此不能把它当一维数组二分。本题的关键是从右上角开始每次比较都能确定排除一整行或一整列。2. 为什么从右上角开始右上角matrix[0][n - 1]有两个相反的单调方向左边都更小。 下面都更大。因此当前位置matrix[row][col]与target比较后移动方向是确定的current target向左排除当前列。 current target向下排除当前行。 current target找到答案。当前值过大为什么排除当前列如果current target当前列从上到下递增。从当前行往下的元素都满足matrix[i][col] current target整列都太大不可能有答案因此col--;当前值过小为什么排除当前行如果current target当前行从左到右递增。当前剩余区域中这一行从左边界到当前列的所有元素都满足matrix[row][j] current target整行都太小不可能有答案因此row;3. 用 target 5 完整模拟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] ]从右上角开始row 0, col 4当前值 15 15 5向左。 row 0, col 3当前值 11 11 5向左。 row 0, col 2当前值 7 7 5向左。 row 0, col 1当前值 4 4 5向下。 row 1, col 1当前值 5 找到目标。路径是15 - 11 - 7 - 4 | v 5因此这类搜索也叫 Z 字形搜索。4. 为什么不会漏掉答案当前位置始终是当前剩余区域的右上角。当前值大于 target当前列下面的值更大整列排除安全。 当前值小于 target当前行左边的值更小整行排除安全。每一步删除的都是确定不可能包含target的区域。搜索会在找到目标或剩余区域为空时结束因此不会漏掉答案。5. Java 代码完整注释classSolution{publicbooleansearchMatrix(int[][]matrix,inttarget){// 空矩阵中不存在目标。if(matrix.length0||matrix[0].length0){returnfalse;}intmmatrix.length;intnmatrix[0].length;// 从右上角开始。introw0;intcoln-1;// row 只向下移动col 只向左移动。// 任一指针越界时说明剩余区域为空。while(rowmcol0){intcurrentmatrix[row][col];if(currenttarget){returntrue;}if(currenttarget){// 当前列从上到下递增下面的元素只会更大。// 所以当前列不可能有 target向左排除它。col--;}else{// 当前行从左到右递增左边的元素只会更小。// 所以当前行不可能有 target向下排除它。row;}}returnfalse;}}6. 左下角也可以左下角同样有相反的单调方向上面更小右边更大。因此从左下角开始也可以当前值大于 target向上。 当前值小于 target向右。它与右上角写法本质相同。学习时固定记住右上角版本即可大了向左小了向下。7. 复杂度分析每一步只会向左移动一列或者向下移动一行。最多向左 n 次。 最多向下 m 次。所以时间复杂度是O(m n)额外空间复杂度是O(1)8. 总结这题属于矩阵搜索 / 单调性剪枝。从右上角开始当前值 target当前列全都太大向左。 当前值 target当前行全都太小向下。每一步排除一整行或一整列因此效率是O(m n)。一句话记忆从右上角开始大了向左小了向下。

相关新闻

Cesium 空间分析:把 “坡向” 计算搬到浏览器

Cesium 空间分析:把 “坡向” 计算搬到浏览器

前端做 GIS 空间分析不是新鲜事,但把坡向计算搬到浏览器里跑、还要能交互式选范围,中间藏了多少细节?这篇文章把完整实现拆开给你看。 开篇 CesiumJS 提供了 sampleTerrain API 可以采样地形高度,但没有内置"坡向分析"…

2026/7/29 11:33:43阅读更多 →
RAG、GraphRAG 与 LLM Wiki:有什么区别?分别适合哪些应用场景

RAG、GraphRAG 与 LLM Wiki:有什么区别?分别适合哪些应用场景

RAG 解决“从哪里找到相关内容”,GraphRAG 解决“如何理解知识之间的关系”,LLM Wiki 解决“如何让知识长期沉淀、持续维护并被人和 AI 共同使用”。 关键词: RAG、GraphRAG、LLM Wiki、知识库、知识图谱、AI Agent 在构建企业知识库、智能问…

2026/7/29 11:33:43阅读更多 →
嵌入式开发中MP3模块通信故障排查:波特率匹配原理与实战调试指南

嵌入式开发中MP3模块通信故障排查:波特率匹配原理与实战调试指南

1. 项目概述:当MP3模块“哑火”时,我们到底在调试什么? “求助求助!!!”——在嵌入式开发社区里,看到这样标题的帖子,我几乎能立刻感受到屏幕那头朋友的焦灼。一个简单的MP3播放功能…

2026/7/29 11:33:43阅读更多 →
打造家庭游戏串流中心:Sunshine完全配置指南

打造家庭游戏串流中心:Sunshine完全配置指南

打造家庭游戏串流中心:Sunshine完全配置指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器,专门为Moonlight客…

2026/7/29 12:33:55阅读更多 →
ncmdumpGUI:3步轻松将网易云音乐ncm文件转换为MP3的完整指南

ncmdumpGUI:3步轻松将网易云音乐ncm文件转换为MP3的完整指南

ncmdumpGUI:3步轻松将网易云音乐ncm文件转换为MP3的完整指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾为网易云音乐下载的歌曲只能在…

2026/7/29 12:33:55阅读更多 →
当保龄球馆的“心脏”被换掉:用1600美元的ESP32替代12万美元的商用系统

当保龄球馆的“心脏”被换掉:用1600美元的ESP32替代12万美元的商用系统

当保龄球馆的“心脏”被换掉:用1600美元的ESP32替代12万美元的商用系统 在Hacker News上,一个名为“我用1600美元的ESP32替代了12万美元的保龄球馆计分系统”的项目获得了超过1400票的热度。这个看似疯狂的举动,背后隐藏着关于技术成本、工业…

2026/7/29 12:33:55阅读更多 →
终极Sunshine游戏串流指南:免费打造你的家庭游戏共享平台

终极Sunshine游戏串流指南:免费打造你的家庭游戏共享平台

终极Sunshine游戏串流指南:免费打造你的家庭游戏共享平台 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾想过在客厅电视上畅玩书房电脑里的3A大作&#xff1f…

2026/7/29 12:33:55阅读更多 →
Arduino串口数据解析实战:从字符串分割到PWM控制应用

Arduino串口数据解析实战:从字符串分割到PWM控制应用

1. 从“逗号难题”到“数据流”:一个Arduino串口解析的实战场景 如果你玩过Arduino,大概率遇到过这个场景:你想通过电脑串口给Arduino发送一组数据,比如“1024,512,256,128”,希望Arduino能把这串字符拆开,…

2026/7/29 12:33:55阅读更多 →
锂电池SOC估算与EKF算法技术详解

锂电池SOC估算与EKF算法技术详解

1. 锂电池SOC估算与扩展卡尔曼滤波技术解析在新能源和储能领域,锂电池的荷电状态(State of Charge, SOC)估算是电池管理系统(BMS)的核心功能之一。准确估算SOC不仅关系到电池的高效使用,更是安全运行的重要…

2026/7/29 12:31:55阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →