详细介绍:LeetCode 240. 搜索二维矩阵 II

news/2025/9/24 10:03:09/文章来源:https://www.cnblogs.com/yxysuanfa/p/19108644

 题目描述  

编写一个高效的算法来搜索 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

解法

1.暴力

class Solution {
public:
bool searchMatrix(vector>& matrix, int target) {
int m = matrix.size(),n = matrix[0].size();
for(int i = 0;i  target) break;
if(matrix[i][j] > target && j == n - 1) return false;
}
}
return false;
}
};
算法思路

        利用矩阵每行都是递增的这一特性,设计一个二层循环,逐行搜索。

时间复杂度:O(NM),空间复杂度:O(1)

2.贪心

解题思路:

        若使用暴力法遍历矩阵 matrix ,则时间复杂度为 O(NM) 。暴力法未利用矩阵 “从上到下递增、从左到右递增” 的特点,显然不是最优解法。

如下图所示,我们将矩阵逆时针旋转 45° ,并将其转化为图形式,发现其类似于 二叉搜索树 ,即对于每个元素,其左分支元素更小、右分支元素更大。因此,通过从 “根节点” 开始搜索,遇到比 target 大的元素就向左,反之向右,即可找到目标值 target 。

        “根节点” 对应的是矩阵的 “左下角” 和 “右上角” 元素,本文称之为 标志数 ,以 matrix 中的 左下角元素 为标志数 flag ,则有:

        若 flag > target ,则 target 一定在 flag 所在 行的上方 ,即 flag 所在行可被消去。
        若 flag < target ,则 target 一定在 flag 所在 列的右方 ,即 flag 所在列可被消去。

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

1.从矩阵 matrix 左下角元素(索引设为 (i, j) )开始遍历,并与目标值对比:

· 当 matrix[i][j] > target 时,执行 i-- ,即消去第 i 行元素。

· 当 matrix[i][j] < target 时,执行 j++ ,即消去第 j 列元素。

    · 当 matrix[i][j] = target 时,返回 true ,代表找到目标值。

2.若行索引或列索引越界,则代表矩阵中无目标值,返回 false 。

时间复杂度:O(M+N),空间复杂度:O(1)

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

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

相关文章

Avalonia 背景颜色Transparent在用户界面设计中对悬浮效果影响的总结

Transparent 对悬浮效果的影响 在用户界面设计中,透明(Transparent)属性常用于控制组件如何处理鼠标事件及视觉呈现。特别是在Avalonia UI框架中,设置控件的背景色为透明对实现交互效果如悬停反馈有重要影响。 1. …

飞书 燕千云焕新上线,飞书用户即刻试用ITSM工具

飞书x燕千云ITSM,让IT服务再焕新当飞书的协作流畅性,与燕千云智能服务流平台的专业IT服务能力相遇,飞书用户在无需改变使用习惯的情况下,也能获得更智能、更高效、更简便的企业IT服务新体验。深度集成飞书生态,即…

如果使用微软 Azure 托管的 OpenAI 服务

使用微软 Azure 托管的 OpenAI 服务时,LangChain4j 提供了专门的集成支持,通过 langchain4j-azure-openai 模块可以轻松实现交互。以下是详细的使用指南: 1. 准备工作创建 Azure OpenAI 资源:在 Azure 门户 中创建…

西樵网站建设公司电脑做apk的网站h5

Windows Server 2012姗姗来迟&#xff0c;最新的Hyper-V 3给我们带来更多的惊喜&#xff0c;后续三篇博文和大家共同学习虚拟机CPU竞争机制。 第一部分&#xff1a;分配给虚拟机的CPU资源 第二部分&#xff1a;限定虚拟机可用的CPU利用率 第三部分&#xff1a;争夺CPU资源优先级…

Alibaba Cloud Linux与 RHEL/CentOS版本对应关系 - 实践

Alibaba Cloud Linux与 RHEL/CentOS版本对应关系 - 实践2025-09-24 09:52 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; …

免费表格模板网站建设视频网站的视频源

ArrayList 基于数组实现&#xff0c;无容量的限制。 在执行插入元素时可能要扩容&#xff0c;在删除元素时并不会减小数组的容量&#xff0c;在查找元素时要遍历数组&#xff0c;对于非null的元素采取equals的方式寻找。 是非线程安全的。 注意点&#xff1a; &#xff08…

象山县城乡建设局网站网站主页图片怎么换

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;多目标优化算法 多目标优化 分别求权重方法 算法流程&#xff1a; 两个目标权重求和&#xff0c;化为单目标函数&#xff0c;然后求解最优值 min ⁡ x ∑ i 1 m w i F i ( x ) s.…

OpenCV:人脸识别实战,3 种算法(LBPH/EigenFaces/FisherFaces)代码详解 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:Playwright录制时的高亮实现机制分析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

什么是文件外发审批?主要有哪几种关键流程?

文件外发审批是企业进行外部文档传输时不可或缺的一部分。它涵盖了从申请发起到文档送达后反馈的一系列环节。在申请阶段,员工需要利用Ftrans B2B企业间文件安全交换系统,准确填写申请信息以确保透明度和合规性。随后…

VPX处理板设计原理图:9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡 C6678板卡, XC7VX690T板卡, VPX处理板

基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡 一、概述本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V6…

Python入门—Mac如何搭建Python开发环境?

Python入门—Mac如何搭建Python开发环境?Python入门—Mac如何搭建Python开发环境?编程玉子 ​关注她14 人赞同了该文章随着Numpy、Scipy、Matplotlib和Pandas等众多程序库的开发,python在数据分析、数据挖掘、海量数…

织梦做网站简单吗高端网站建设公司排名

1.概述 封装&#xff08;Encapsulation&#xff09;是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。 封装可以被认为是一个保护屏障&#xff0c;防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据&#xff0c;必须通过严格的接口控制…

VitePress 添加友链界面

效果预览友链数据存储 友链数据通常是经常需要添加和修改的,所以我们不能直接写死到页面上。这里我们单独提一个文件去存储友链数据,并且友链数据的格式基本也是类似的。 新建 docs/pages/links.md 文件,内容如下:…

跨网文件摆渡软件:企业数据安全高效传输的关键解决方案!

在数字化时代,企业为保障核心数据安全,普遍采用网络隔离策略,将内网与外网、研发网与办公网等不同网络环境分隔开来。然而,业务协同中跨网文件传输的需求始终存在,跨网文件摆渡软件应运而生。这类软件是专门用于在…

洛谷题单指南-进阶数论-P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

原题链接:https://www.luogu.com.cn/problem/P1495 题意解读:求方程组x ≡ bi (mod ai), i∈[1,n]的最小正整数解,所有的ai互质。 解题思路: 1、中国剩余定理 设方程组为(a1,a2,a3互质):x ≡ b1 (mod a1) x ≡…

第十四届蓝桥杯青少组C++选拔赛[2022.12.18]第二部分编程题(4、充电站) - 指南

第十四届蓝桥杯青少组C++选拔赛[2022.12.18]第二部分编程题(4、充电站) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-…

界面控件DevExpress WinForms中文教程:Data Grid - 搜索/查找面板

界面控件DevExpress WinForms中文教程:Data Grid - 搜索/查找面板DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用…

c语言之自定义memcpy

void *Memcpy(void *dest, const void *src, size_t count) { cout<<"sizeof(dest)是:"<<sizeof(dest)<<endl;int bytelen=count/sizeof(dest); /*按CPU位宽拷贝*/int slice=count%si…

国产芯片处理板卡:7-基于国产化FT-M6678+JFM7K325T的6U CPCI信号处理卡

基于国产化FT-M6678+JFM7K325T的6U CPCI信号处理卡一、板卡概述本板卡系我公司自主研发,基于6U CPCI的通用高性能信号处理平台。板卡采用一片国产8核DSP FT-C6678和一片国产FPGA JFM7K325T-2FFG900作为主处理器。为您…