1.顺时针打印二维数组

2.零所在行列清零
【问题描述】如果矩阵中某个元素为0 ,则将其所在行和列清零
【算法】扫描矩阵,建立行的一维数组以及列的一维数组并做标记

3.Z字型打印矩阵

【算法】分条件判断从左下到右上还是从右上到左下

4.边界为1的最大子方阵
【问题描述】给定一个NxN的矩阵matrix,在这个矩阵中,只有0和1两种值,返回边框全是1的最大正方形的边长长度。

【算法】枚举

【优化】预处理,复制一份空的与原矩阵阶数相同的矩阵,记录其右和下(包含他自己的1的个数),只检测4个数就行,三维数组


5.子数组最大累加和
【问题描述】给定一个数组arr ,返回子数组的最大累加和,例: arr=[1,-2,3,5,-2,6,-1]所有的子数组中[3,5,-2,6]可以累加出最大的和12 ,所以返回12。
【算法1】暴力求解,逐个遍历
【代码】

【算法2】负数丢弃正数保留

6.子矩阵最大累加和
【问题描述】给定一个矩阵matrix ,其中的值有正、有负、有0 ,返回子矩阵的最大累加和
例如, matrix为:
其中最大累加和的子矩阵为:2 2,所以返回4。
【算法】每行按列求和,即多行融为1行,3+2+1即n的平方级,每趟是时间复杂度n³ ,算每列相加的和。注意异常值,即数组为空(长度为0)时直接返回
【代码】

7.矩阵乘法
【算法】行x列相加
【代码】

本文介绍了多种矩阵操作算法,包括顺时针打印二维数组、零所在行列清零、Z字型打印矩阵、寻找边界为1的最大子方阵、子数组及子矩阵最大累加和等,并探讨了不同算法的具体实现。
2万+

被折叠的 条评论
为什么被折叠?



