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列相加
【代码】