HOT 100 | 73.矩阵置零、54.螺旋矩阵、48.旋转图像

leetcode-hot100-6矩阵 输入: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。输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 阅读详情

一、73. 矩阵置零

73. 矩阵置零 - 力扣(LeetCode)

 1. 解题思路

1. 使用两个数组分别标记每行每列是否有0,初始化全为False,遇到0就变成True。

2. 遍历矩阵,遇到0就将False改成True。

3. 再次遍历矩阵,更新原数组,将0的行列置为0。

2. 代码实现

class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        m, n = len(matrix), len(matrix[0])
        row, col = [False]*m, [False]*n
        for i in range(m):
            for j in range(n):
                if matrix[i][j] == 0:
                    row[i] = col[j] = True
        for i in range(m):
            for j in range(n):
                if row[i] or col[j]:
                    matrix[i][j] = 0

二、54.螺旋矩阵

54. 螺旋矩阵 - 力扣(LeetCode)

1. 解题思路

(1)判断传入的矩阵是否具备合法性,不合法就直接返回空数组。

(2)定义res空数组,用于存储最终的结果。

(3)定义四个变量,分别是矩阵的四个边界。

        

2. 代码实现

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        if not matrix or not matrix[0]:
            return []
        res = []
        left,right = 0, len(matrix[0])-1
        top, bottom = 0, len(matrix)-1
        while left <= right and top <= bottom:
            for i in range(left, right+1):
                res.append(matrix[top][i])
            for i in range(top+1, bottom+1):
                res.append(matrix[i][right])
            if left < right and top < bottom:
                for i in range(right-1, left, -1):
                    res.append(matrix[bottom][i])
                for i in range(bottom, top, -1):
                    res.append(matrix[i][left])
            left += 1
            right -= 1
            top += 1
            bottom -= 1
        return res

三、48.旋转图像

1. 解题思路

(1)使用逐层旋转的方法,由于是n*n的矩阵,所以只需要定义left和right的初始值即可: left, right = 0, len(matrix)。left和right初始值分别直接赋值给top和bottom即可。

(2)定义一个单独的变量topleft,用于存储左上角的数值,方便后面进行交换。

(3)逐层进行旋转,也就是先逐次旋转四个顶点,也就是进行值的交换,然后旋转偏移量为i的元素。

2. 代码实现

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        left, right = 0, len(matrix)-1
        while left < right:
            for i in range(right-left):
                top, bottom = left, right
                topleft = matrix[top][left+i]
                matrix[top][left+i] = matrix[bottom-i][left]
                matrix[bottom-i][left] = matrix[bottom][right-i]
                matrix[bottom][right-i] = matrix[top+i][right]
                matrix[top+i][right] = topleft
            left+=1
            right-=1

MC1496乘法器AM调制电路搭建全流程(附Multisim 14.0仿真文件) 本文提供了基于MC1496乘法器搭建AM调制电路的完整实战指南。针对仿真模型缺失的痛点,详细讲解了从晶体管级手动构建MC1496等效模型,到外围电路设计、调制度参数计算与调节,并在Multisim 14.0中进行仿真验证的全流程。通过深度剖析MC1496内部原理与AM信号调制机制,帮助读者获得从仿真到实践的可控设计与排错能力。 阅读详情

相关推荐

C# OpenCvSharp4实战:5分钟搞定工业视觉模板匹配(附完整代码)

本文为C#开发者提供了基于OpenCvSharp4的工业视觉模板匹配实战指南。通过详细的环境搭建、核心原理解析和完整代码示例,重点介绍了如何使用`matchTemplate`函数,特别是`CCoeffNormed`方法,快速实现高精度、抗光照变化的模板匹配,并分享了多目标匹配、图像预处理等工业级优化技巧。

weixin_29053067的博客 503

力扣hot100 | 矩阵 | 73. 矩阵置零、54. 螺旋矩阵、48. 旋转图像、240. 搜索二维矩阵 II

给定一个m x n的矩阵,如果一个元素为,则将其所在行和列的所有元素都设为。请使用 原地 算法。示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

m0_56231308的博客 1156

【Python&RS】哨兵2号(Sentinel2)轨道条带说明+图幅统计(表格+矢量)

今天给大家带来哨兵2号的图幅编号介绍以及全国省、市所需图幅数的统计。网上教程极少,而且结果也不公开。因为每次下载的时候都不知道需要几幅,所以研究后给大家分享一下。

Remote Sensing迷途小书童 1681

leetcode-hot100-矩阵:73矩阵置零-54螺旋矩阵-48旋转图像-240搜索二维矩阵

矩阵:73矩阵置零-54螺旋矩阵-48旋转图像-240搜索二维矩阵

XSYaaaaan的博客 265

单细胞测序数据读取实战指南:从入门到精通

本文提供了单细胞测序数据读取的实战指南,涵盖从标准10X Genomics格式到通用表达矩阵及RDS文件的读取方法。文章重点解析了数据读取的核心步骤、常见问题解决方案及进阶技巧,旨在帮助用户夯实数据分析基础,确保后续分析流程的准确性。

weixin_29095587的博客 460

如何加快香山处理器Chisel->Verilog编译速度

相比使用默认的scala firrtl complier,使用CIRCT能够将香山代码编译到Verilog的速度提高50%左右。在执行make命令时加上MFC=1,例如make verilog MFC=1或make emu MFC=1。在本地从源码编译CIRCT,在编译完成后将circt/bin路径加入PATH中。使用GraalVM免费版作为JVM编译香山比OpenJDK快10%-20%。我们推荐使用GraalVM代替OpenJDK。使用CIRCT编译香山。

专业技术人员的归宿 862

LeetCode Hot 100 - 矩阵 | 73.矩阵置零、54.螺旋矩阵、48.旋转图像、240.搜索二维矩阵II

新建两个boolean数组记录该行或列是否出现0,再使用数组更新矩阵。优化空间复杂度:使用矩阵的第一行和第一列当做数组记录,要提前利用两个变量将第一行或第一列是否有0进行记录,最后使用该变量对第一行和第一列进行处理。

Alive1218的博客 462

汇川Easy系列PID_AT指令弹簧质量阻尼系统闭环控制仿真测试

汇川Easy系列PLC系统PID指令(温度控制PID应用编程)

RXXW_Dor的博客 763

LeetCode Hot100 - 矩阵篇

力扣hot100中的矩阵部分

m0_70220973的博客 1149

使用DrissionPage实现携程酒店信息智能爬取

本文介绍了一个基于DrissionPage技术的携程酒店信息爬虫系统,通过监听API数据包实现高效采集。系统可自动获取酒店名称、价格、评分、位置等15个维度的数据,支持多页滚动加载和智能去重。相比传统爬虫,该方法直接解析API返回的JSON数据,避免了复杂的HTML解析和加密参数分析,提高了开发效率和稳定性。文章详细阐述了13个关键实现步骤,并强调数据采集应严格遵守法律法规,仅用于技术学习和市场研究。该系统可为旅游决策、价格监测等提供数据支持,但需注意合理使用频率和隐私保护。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 386

Open3D 高斯牛顿法优化的ICP点云配准

本文介绍了基于高斯牛顿法的ICP点云配准算法。算法通过最小化源点云与目标点云之间的误差函数,求解最优的刚性变换参数(平移向量和欧拉角)。核心内容包括:1)建立误差函数和目标函数;2)推导雅可比矩阵计算,特别是旋转导数的李代数近似;3)详细阐述高斯牛顿法的迭代流程,包括变换计算、最近邻搜索、参数更新等步骤;4)分析算法的优缺点,指出其具有二阶收敛速度但可能陷入局部最优。最后给出了完整的数学推导过程,包括误差函数的泰勒展开和目标函数的近似优化。该算法适用于三维点云配准任务,但需要良好的初始位姿以避免局部收敛问题

点云侠的博客 128

代码随想录算法训练营第三十四天 | hot41/100| 41.缺失的第一个正数、73.矩阵置零、54.螺旋矩阵、48.旋转图像

思路是自己搞一个哈希表,把 1 这个数放到下标为 0 的位置, 2 这个数放到下标为 1 的位置,按照这种思路整理一遍数组。然后我们再遍历一次数组,第 1 个遇到的它的值不等于下标的那个数,就是我们要找的缺失的第一个正数。当matrix是二维数组时,matrix.length表示二维数组的长度,也就是里面包含几个数组,也就是**行数**u、d分别是顶部和底部指针,l、r是左部和右部指针,i往一个方向行走时会和固定的某个指针合作,合作完就收缩圈子。对于矩阵中的第一行而言,在旋转后,它出现在倒数第一列的位置。

weixin_57981831的博客 417

Experion PKS系列开发:I_O模块_ExperionPKS与第三方I-O模块的集成

通过上述步骤,可以成功将第三方I/O模块集成到Honeywell Experion PKS系统中,实现对现场设备的监视和控制。集成过程中需要注意选择合适的第三方模块,配置正确的通信参数,编写正确的控制逻辑,并进行充分的测试,以确保系统的稳定性和可靠性。不同的通信协议(如Modbus、Profibus、Ethernet/IP、CANopen、OPC UA)有其独特的配置和编程方法,但总体流程相似。在实际应用中,根据项目需求选择合适的协议和模块,可以有效提高系统的灵活性和适应性。

zhubeibei168的博客 1102

LeetCode Hot 100:矩阵

LeetCode Hot 100:矩阵

ProgramNovice的博客 384

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

力扣hot100_矩阵(重制版)_python版本

【代码】力扣hot100_矩阵(重制版)_python版本。

Y1n的博客 670

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

力扣hot100_矩阵_python版本

【代码】力扣hot100_矩阵_python版本。

Y1n的博客 264

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Leetcode Hot 100 —— 矩阵

Leetcode Hot 100 —— 矩阵

qq_52421969的博客 721

LeetCode Hot 100(矩阵篇)

本文介绍了四个矩阵相关算法题的解法。73题通过利用矩阵第一行和列作为标记空间实现O(1)空间复杂度置零;54题使用螺旋遍历方式收集矩阵元素;48题通过两次翻转实现图像90度旋转;240题从右上角开始搜索矩阵,通过逐步缩小范围实现高效查找。这些解法都注重时间/空间复杂度优化,展示了矩阵处理的常见技巧,包括标记法、遍历顺序控制和双指针等。

qq_56642160的博客 596

LeetCode Hot 100 | 矩阵(C++ 题解)

题号题目难度核心技巧时间复杂度48旋转图像🟡 中等四角环形原地交换O(n²)54螺旋矩阵🟡 中等四边界收缩遍历O(mn)73矩阵置零🟡 中等第一行/列原地标记O(mn)240搜索二维矩阵 II🟡 中等右上角 Z 字搜索O(m+n)矩阵题的三类思维:边界收缩:维护 left/right/top/bottom 四个指针,逐圈或逐层处理(48、54)原地标记:复用矩阵自身的某行/列存储辅助信息,把 O(m+n) 额外空间压到 O(1)(73)有序性剪枝。

jcm0903的博客 365

【力扣hot100】矩阵专题

本专题涵盖矩阵相关算法题解,主要包括: 矩阵置零:使用行列标记数组记录零元素位置,两次遍历完成置零操作。 螺旋矩阵:通过方向控制和步长变化实现螺旋遍历,简化边界判断。 旋转图像:通过数学推导实现顺时针90度旋转(转置+镜像)。 搜索二维矩阵II:从右上角开始利用排除法,时间复杂度O(m+n)。 核心技巧包括标记数组、方向控制、数学规律应用和搜索优化等。

2401_87144364的博客 179

hot100|矩阵

克隆一个相同大小的矩阵,空间复杂度是O(mn)

weixin_45902047的博客 64

【JAVA算法|hot100】矩阵类型题目详解笔记

本文记录了四道矩阵相关算法题的解题思路和代码实现。73题通过辅助数组标记零元素位置后修改原矩阵;54题使用方向数组模拟顺时针螺旋遍历;48题利用坐标变换规律实现原地90度旋转;240题从左下角开始利用行列有序特性进行高效搜索。每道题都包含解题关键思路和核心代码实现,重点掌握矩阵遍历、方向控制、坐标变换等技巧。

2303_80850235的博客 424

hot100刷题第6天(73,54,59,48,240)

这种方法思路清晰,易于理解和实现。的长度为矩阵的行数,的长度为矩阵的列数。这一步只负责记录信息,

cyz322649的博客 603

矩阵 - LeetCode hot 100

我们提前将首行和首列是否有0的信息储存(因为第一行和第一列之后会被作为标记数组使用,如果它们原本包含0,后续无法区分这个0是原始信息还是标记信息,所以需要提前保存),然后从第二行、第二列开始循环遍历,遇到0就将其对应首行首列位置也置0,然后再次从第二行第二列开始遍历,根据首行首列储存的信息来进行置0。在算法题的考察中一般为矩阵的遍历、边界控制以及原地修改矩阵,难点不在于数据结构和语法的考察,而在于几何规律、自身特性的利用和边界条件的控制。** 旋转图像,这意味着你需要直接修改输入的二维矩阵。

2401_87805056的博客 207

【力扣hot100】矩阵专题|73、54、48、240题解

本文总结了三个矩阵相关算法题的解法: 73.矩阵置零:使用两个标记数组分别记录需要置零的行和列。第一次遍历标记位置,第二次遍历根据标记更新矩阵。时间复杂度O(mn),空间复杂度O(m+n)。 54.螺旋矩阵:提供了两种解法: 边界收缩法:维护四个边界逐步收缩,按顺序遍历外圈到内圈 步长规律法:通过n和m交替减少来确定每个方向的步数,利用方向数组实现转向 48.旋转图像:比较了两种方法: 辅助矩阵法:创建新矩阵按旋转规则填入元素,空间复杂度O(n²) 原地旋转法:通过四个位置循环交换实现原地旋转,空间复杂度O

2401_87144364的博客 242

【HOT100第四天】除自身以外数组的乘积,矩阵置零,螺旋矩阵,旋转图像

一个前缀法和三个矩阵题

fb的博客 1077
上一篇: HOT 100 | 189.轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数
下一篇: Hot 100 | 240. 搜索二维矩阵 II、160.相交链表、206.反转链表
Accept17
博客等级 码龄4年 479粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值