多维数组与矩阵

1.顺时针打印二维数组

多维数组与矩阵_第1张图片

2.零所在行列清零

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

多维数组与矩阵_第2张图片

3.Z字型打印矩阵 

多维数组与矩阵_第3张图片

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

多维数组与矩阵_第4张图片

4.边界为1的最大子方阵

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

多维数组与矩阵_第5张图片

【算法】枚举

多维数组与矩阵_第6张图片

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

多维数组与矩阵_第7张图片

多维数组与矩阵_第8张图片

5.子数组最大累加和
【问题描述】给定一个数组arr ,返回子数组的最大累加和,例: arr=[1,-2,3,5,-2,6,-1]所有的子数组中[3,5,-2,6]可以累加出最大的和12 ,所以返回12。

【算法1】暴力求解,逐个遍历

【代码】

多维数组与矩阵_第9张图片

【算法2】

多维数组与矩阵_第10张图片

6.子矩阵最大累加和
【问题描述】给定一个矩阵matrix ,其中的值有正、有负、有0 ,返回子矩阵的最大累加和
例如, matrix为:
多维数组与矩阵_第11张图片其中最大累加和的子矩阵为:2   2,所以返回4。

【算法】每行按列求和,即多行融为1行,3+2+1即n的平方级,每趟是时间复杂度n³ ,算每列相加的和。注意异常值,即数组为空(长度为0)时直接返回

【代码】

多维数组与矩阵_第12张图片

7.矩阵乘法

【算法】行x列相加

【代码】

多维数组与矩阵_第13张图片

你可能感兴趣的:(算法java,矩阵,算法,java)