public class Test04 {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("数组行数");
int n = sc.nextInt();
int[][] current = getCurrent(n);
int[][] rotate = rotate(current);
printCuurent(rotate);
}
private static void printCuurent(int[][] rotate) {
for (int i = 0; i < rotate.length; i++) {
for (int j = 0; j < rotate[i].length; j++) {
System.out.print(rotate[i][j] + " ");
}
System.out.println();
}
}
private static int[][] getCurrent(int n) {
System.out.println("输入数组目标值");
int[][] res = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
res[i][j] = sc.nextInt();
}
}
return res;
}
/**
* 矩阵选装90
* @param matrix 目标数组
* @return 旋转后的数组
* 思路:
* 1:观察矩阵,先通过对角线反转
* 2:在通过数组方向水平交换
* 收获:
* 1:两个值交换的方式;
* 2:多观察其中的细节,不要想着一步完成。
*
*/
public static int[][] rotate(int[][] matrix){
//对角线交换
for (int i = 0; i < matrix.length; i++) {
for (int j = i + 1; j < matrix[i].length; j++) {
matrix[i][j] = matrix[i][j] + matrix[j][i];
matrix[j][i] = matrix[i][j] - matrix[j][i];
matrix[i][j] = matrix[i][j] - matrix[j][i];
}
}
//竖直方向交换
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length / 2; j++) {
matrix[i][j] = matrix[i][j] + matrix[i][matrix.length - 1 - j];
matrix[i][matrix.length - 1 - j] = matrix[i][j] - matrix[i][matrix.length - 1 - j];
matrix[i][j] = matrix[i][j] - matrix[i][matrix.length - 1 - j];
}
}
return matrix;
}
}
力扣算法-矩阵旋转
最新推荐文章于 2022-09-07 22:42:00 发布