【发布时间】:2020-01-21 19:40:45
【问题描述】:
我正在尝试为经典问题寻找替代解决方案:
给定一个 m x n 2D 图像矩阵,其中每个整数代表一个像素。沿水平轴将其原位翻转。
之前:
1 2 3
4 5 6
7 8 9
之后:
7 8 9
4 5 6
1 2 3
我知道经典的解决方案,但想知道您是否可以通过想象矩阵顺时针旋转来解决它?然后,您可以假设只对矩阵进行垂直翻转,如下所示。
转弯后:
3 6 9
2 5 8
1 4 7
public static void flipHorizontalAxis(int[][] matrix)
{
for (int column = matrix.length - 1; column > 0; column--)
{
for (int row = 0; row < matrix[0].length / 2; row++)
{
int temp = matrix[column][row];
matrix[column][row] = matrix[column][matrix.length - 1];
matrix[column][matrix[0].length - 1] = temp;
System.out.print(matrix[column][row] + "\t");
}
System.out.println();
}
}
这是我目前所拥有的,但我的输出显示:
3 4 7
2 5 8
1 6 9
是什么导致我的解决方案出现错误?
【问题讨论】:
-
你确实是对的。旋转和转置矩阵将导致矩阵镜像。研究此类事物的数学领域称为群论。
-
请先修改矩阵,再打印出来。
标签: java matrix multidimensional-array