揭秘Java二维数组旋转技巧:轻松实现90度旋转,提升编程效率!

在Java编程中,二维数组的旋转是一个常见的操作,尤其在图像处理、游戏开发等领域。本文将详细介绍如何在Java中实现二维数组的90度旋转,并提供几种不同的方法,包括使用辅助数组和使用原地算法。我们将探讨每种方法的原理和实现,以帮助您提升编程效率。
1. 使用辅助数组进行旋转
最直接的方法是使用一个辅助数组来存储旋转后的结果。这种方法易于理解,但需要额外的空间。
1.1 旋转90度顺时针
以下是一个使用辅助数组实现二维数组90度顺时针旋转的Java代码示例:
public int[][] rotate90Clockwise(int[][] matrix) {
int rows = matrix.length;
int cols = matrix[0].length;
int[][] rotated = new int[cols][rows];

for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { rotated[j][rows - 1 - i] = matrix[i][j]; } } return rotated; } 1.2 旋转90度逆时针 同样,以下是一个实现二维数组90度逆时针旋转的Java代码示例: public int[][] rotate90CounterClockwise(int[][] matrix) { int rows = matrix.length; int cols = matrix[0].length; int[][] rotated = new int[cols][rows]; for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { rotated[cols - 1 - j][i] = matrix[i][j]; } } return rotated; } 2. 使用原地算法进行旋转 原地算法意味着在不需要额外空间的情况下完成旋转。这种方法更高效,但实现起来更复杂。 2.1 原地90度顺时针旋转 以下是一个使用原地算法实现二维数组90度顺时针旋转的Java代码示例: public void rotate90ClockwiseInPlace(int[][] matrix) { int n = matrix.length; // 先转置矩阵 for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } // 翻转每一行 for (int i = 0; i < n; i++) { for (int j = 0; j < n / 2; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[i][n - 1 - j]; matrix[i][n - 1 - j] = temp; } } } 2.2 原地90度逆时针旋转 以下是一个使用原地算法实现二维数组90度逆时针旋转的Java代码示例: public void rotate90CounterClockwiseInPlace(int[][] matrix) { int n = matrix.length; // 先转置矩阵 for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[j][i]; matrix[j][i] = temp; } } // 翻转每一列 for (int i = 0; i < n; i++) { for (int j = 0; j < n / 2; j++) { int temp = matrix[j][i]; matrix[j][i] = matrix[n - 1 - j][i]; matrix[n - 1 - j][i] = temp; } } } 3. 总结 本文介绍了Java中实现二维数组90度旋转的两种方法:使用辅助数组和原地算法。使用辅助数组的方法简单直观,但需要额外的空间。原地算法更高效,但实现起来更复杂。根据具体的应用场景和性能要求,您可以选择最适合的方法。