Leetcode 74. 搜索二维矩阵

【中等】力扣算法题解析LeetCode74:搜索二维矩阵 题目要求在满足特定条件(行内非严格递增、行间严格递增)的二维矩阵中查找目标值。通过将矩阵视为一维有序数组,利用二分查找高效定位目标值。算法步骤如下: 初始化:处理空矩阵,获取行列数,设置左右边界为一维索引范围(0 到 m*n-1)。 二分查找:计算中间索引并转换为二维坐标,比较中间值与目标值,调整左右边界。 终止条件:找到目标返回 true,否则返回 false。 代码实现:通过行列索引转换(mid/n 和 mid%n)实现二维映射,时间复杂度为 O(log(mn))。示例结果验证了算法的正确性。 阅读详情

题目

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。

每行的第一个整数大于前一行的最后一个整数。

示例 1:

输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
输出: true

示例 2:

输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 13
输出: false

解答

解法一:O(m + n)

因为从左到右升序, 从上到下升序。所以每次可以去掉一行 / 一列。

具体参见 剑指Offer

代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        if(matrix == null || matrix.length == 0) return false;
        int row = 0;
        int col = matrix[0].length - 1;
        while(row < matrix.length && col >= 0) {
            if(matrix[row][col] == target) {
                return true;
            } else if(matrix[row][col] > target) {
                col --;
            } else {
                row ++;
            }
        }
        
        return false;
    }
}
结果

在这里插入图片描述

解法二:O(log(mn))

将二维的数组转化成一维的数组考虑。
假设在一维数组中下标为 idx。
那么转化方式:num[idx] = matrix[idx / col][idx % col]

代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        if(matrix == null || matrix.length == 0) return false;
        int row = matrix.length;
        int col = matrix[0].length;
        int l = 0;
        int r = row * col - 1;
        while(l <= r) {
            int mid = l + (r - l) / 2;
            if(matrix[mid / col][mid % col] == target) {
                return true;
            } else if(matrix[mid / col][mid % col] > target) {
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        }
        
        return false;
    }
}
结果

在这里插入图片描述

计算机视觉-深度学习图像检测方法梳理 计算机视觉-深度学习图像检测方法梳理 由于之后要转方向啦,趁这段时间整理手中硕士研究方向的一些阅读笔记,这是一篇关于计算机视觉的基础知识梳理 先搞清一些小知识点 首先我们要弄清楚图像分类、目标定位、语义分割、实例分割的区别 a. 图像分类 :给定一张输入图像,图像分类任务旨在判断该图像所属类别; b. 目标定位 :在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式; c. 语义分割 :语义分割是目标检测更进阶的任务,目标检测只需要框出每个目 阅读详情

相关推荐

头歌 DNS协议分析第3关----DNS 报文分析

DNS 报文分析

qq_67667368的博客 4345

Leetcode 8. 字符串转换整数 (atoi)

题目 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可...

LetJava的博客 204

【QT开发教程】QMatrix4x4类详解及实战应用:Qt中的4x4矩阵变换

在计算机图形学和三维图形应用中,矩阵变换是一个核心概念。Qt框架提供了QMatrix4x4类,用于处理4x4矩阵变换,帮助开发者在三维空间中进行复杂的几何计算。本文将深入探讨QMatrix4x4的功能及其在Qt应用中的实际应用。

科技改变人类,技术成就未来 715

74. 搜索二维矩阵 LeetCode 力扣

74. 搜索二维矩阵 二维二分搜索法(代码实现的过于复杂了,改日优化一下) 此题对于二分法模板的提炼是不错的 public boolean searchMatrix(int[][] matrix, int target) { if (matrix.length == 0 || matrix[0].length == 0) { return false; } if (matrix.length == 1) {

ZhaoXia_hit的博客 232

YOLOv11 改进 - 注意力机制 | GC Block(GlobalContext Block)全局上下文块:三重变换捕获全局依赖,提升复杂场景鲁棒性

本文介绍了全局上下文块(GC Block)及其在YOLOv11中的集成应用。GC Block是GCNet的核心组件,结合了NLNet和SENet的优势,通过上下文建模、特征变换和特征融合三个模块,高效捕获特征图中的全局依赖关系,在提高模型性能的同时降低计算成本。我们将GC Block引入YOLOv11,在检测头部分的不同尺度特征图上应用该模块。实验表明,改进后的YOLOv11在目标检测任务中表现良好,展现了GC Block在实际应用中的价值。

魔改工程师的博客 949

一个代码循环计算水在石墨烯表面的接触角

石墨烯接触角

Rockyoung 2573

力扣 (LeetCode) 74. 搜索二维矩阵(C语言)

【代码】力扣 (LeetCode) 74. 搜索二维矩阵(C语言),将矩阵当做一维数组,使用二分搜索完成效果。

墨染 360

【项目实战】AES实施应符合NIST密码算法验证程序

AES由美国国家标准与技术研究院(NIST)制定。NIST是负责开发和维护美国政府使用的技术标准的机构,包括加密标准。

奶爸的编程之路,也就一周冷个三天 765

LeetCode第74题_搜索二维矩阵

编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。

qq_40263592的博客 1153

SQL注入详解

SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)。 即:注入产生的原因是后台服务器接收相关参数未经过滤直接带入数据库查询...

渗透之路,攻防之间皆学问 26万+

基于R语言的PLS算法实现解读

我们使用"pls"包来执行PLS回归,并提供了相应的源代码。在本文中,我们将详细解读基于R语言的PLS算法的实现过程,并提供相应的源代码。PLS算法的实现可以借助R语言中的"pls"包。该包提供了丰富的函数和工具,用于执行PLS回归、PLS-DA(PLS-Discriminant Analysis)和其他相关任务。除了执行PLS回归,"pls"包还提供了其他功能,例如PLS-DA(用于分类问题)和PLS变量选择等。上述代码将基于输入的X值,使用训练好的PLS模型进行预测,并返回预测结果。

TechWhizKid的博客 1043

【LeetCode】74. 搜索二维矩阵

摘要 本文详细解析了矩阵置零问题(LeetCode 73题),要求在O(1)空间复杂度内将矩阵中0元素所在行列全部置零。核心解法是巧妙利用矩阵第一行和第一列作为标记空间,配合两个布尔变量记录第一行/列本身是否需要置零。算法分为标记阶段和置零阶段,时间复杂度为O(mn),空间复杂度为O(1)。文章深入分析了关键难点,包括标记冲突处理、遍历顺序选择等,并通过多种示例说明算法流程,对比了不同解法的优劣,最后给出了优化的Go语言实现。这种原地算法思想对处理类似矩阵问题具有重要参考价值。

qq_32019341的博客 1296

手把手教你学Simulink--基于飞行控制与稳定性的场景实例:固定翼无人机的自动起飞与降落控制

本文介绍了使用Simulink对固定翼无人机自动起飞与降落控制系统进行建模与仿真的完整流程。首先构建了包含飞行器动力学模型、控制系统、环境模拟等模块的系统结构,详细阐述了简化动力学方程的推导和实现。重点讲解了PID控制器设计,包括起飞阶段的速度控制和降落阶段的高度控制策略。通过添加环境干扰和输入信号,建立了完整的仿真模型,并利用输出显示模块评估系统性能。该实例为无人机自主控制系统的开发提供了有效的仿真验证方法,有助于优化参数提高飞行稳定性。

MHD0815的博客 4308

LeetCode 74. 搜索二维矩阵

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 74. 搜索二维矩阵,做好准备了么,那么开始吧。 🌲🌲🐴🐴

weixin_62275996的博客 487

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode74 搜索二维矩阵

LeetCode74 搜索二维矩阵 编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] ta...

b27458925的博客 223

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode 力扣 74. 搜索二维矩阵

题目描述(中等难度) 判断一个矩阵中是否存在某个数,矩阵是有序的。 解法一 二分法 看到了有序序列,啥都不用想直接二分,只需要考虑到怎么把二分时候的下标转换为矩阵的行、列下标就可以了,很简单,用除法和求余就够了。 public boolean searchMatrix(int[][] matrix, int target) { int rows = matrix.length; ...

wind_liang的博客 990

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【LeetCode题解】LeetCode 74. 搜索二维矩阵

【题目链接】【题目描述】【题解】

weixin_53552267的博客 440

Leetcode 74. 搜索二维矩阵

Leetcode 74. 搜索二维矩阵 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/search-a-2d-matrix/ 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例&nbs...

CoderWangSon 408

深入解析二维矩阵搜索:LeetCode 74与240题的两种高效解法对比

尽管题目名称相似,但它们的矩阵排序规则和解题思路存在显著差异。本文将从问题本质出发,对比两种解法的核心思想、适用场景及实现细节,帮助读者深入理解并灵活应对类似问题。通过深入理解矩阵的排序规则与算法特性,读者可以灵活选择最优解法,轻松应对二维矩阵搜索问题。无论是面试还是实际工程应用,清晰的思路和高效的代码实现都是解决问题的关键。(O(\log(m \times n))),其中 (m) 为行数,(n) 为列数。(O(m + n)),其中 (m) 为行数,(n) 为列数。

weixin_44435110的博客 1798

golang力扣leetcode 74.搜索二维矩阵

74.搜索二维矩阵74.搜索二维矩阵题解代码 74.搜索二维矩阵 74.搜索二维矩阵 题解 其实就是二维矩阵转一维,然后二分就好了,水题 代码 package main func searchMatrix(matrix [][]int, target int) bool { row := len(matrix) col := len(matrix[0]) left, right := 0, row*col-1 for left+1 < right { mid := left + (rig

清风 426

力扣-74.搜索二维矩阵

小结:依然是二分查找,注意边界值。

weixin_46878941的博客 501

力扣 74.搜索二维矩阵

j--;}else{i++;

qq_51352130的博客 471

74. 搜索二维矩阵(LeetCode 热题 100)

每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。给你一个满足下述两条属性的。

weixin_53009877的博客 2199

LeetCode第74题:搜索二维矩阵(中等)

LeetCode第74题:搜索二维矩阵(中等) 题目:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。 解题思路:双指针的方法逐层搜索。 class Solution { public boolean searchMatrix(int[][] matrix, int t...

new_whiter的博客 373

LeetCode [74] 搜索二维矩阵

LeetCode [74] 搜索二维矩阵题目描述题目分析源码改进改进代码分析难点小结 题目描述 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34,...

Astronote的博客 239

leetcode 74. 搜索二维矩阵

【代码】leetcode 74. 搜索二维矩阵。

m0_74050438的博客 410
上一篇: Leetcode 73. 矩阵置零
下一篇: Leetcode 75. 颜色分类
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值