gpt4 book ai didi

java - 水平翻转二维数组矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:29 24 4
gpt4 key购买 nike

我正在尝试为这个经典问题找到替代解决方案:

给定一个 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

是什么导致我的解决方案出现错误?

最佳答案

如果您知道经典的解决方案以及它是多么简单,即简单的行翻转,那么您为什么还要开始考虑任何必须处理单个单元格的解决方案?这将浪费处理能力并增加不必要的代码复杂性。

public static void flipHorizontalAxis(int[][] matrix) {
int last = matrix.length - 1;
for (int i = last / 2; i >= 0; i--) {
int[] temp = matrix[i];
matrix[i] = matrix[last - i];
matrix[last - i] = temp;
}
}

测试

int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
flipHorizontalAxis(matrix);
System.out.println(Arrays.deepToString(matrix));

输出

[[7, 8, 9], [4, 5, 6], [1, 2, 3]]

关于java - 水平翻转二维数组矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com