1- 思路
两次遍历实现(先行,后主对角互换)
- 技巧:旋转 90 相当于
- 先交换行(利用 i 和 j ,通过 n 交换)
- 再主对角线互换
2- 实现
⭐48. 旋转图像——题解思路
class Solution {
public void rotate(int[][] matrix) {
int n = matrix.length-1;
for(int i = 0 ; i <= n/2;i++){
for(int j = 0 ; j <= n;j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[n-i][j];
matrix[n-i][j] = tmp;
}
}
for(int i = 0 ; i <= n;i++){
for(int j = 0 ; j< i;j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
}
}
3- ACM 实现
public class rotateNinety {
public static void rotate90(int[][] matrix){
int n = matrix.length-1;
for(int i = 0 ; i <= n/2;i++){
for(int j = 0; j <= n;j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[n-i][j];
matrix[n-i][j] = tmp;
}
}
for(int i = 0 ; i <= n;i++){
for(int j = 0; j < i ;j++){
int tmp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = tmp;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入行列数n");
int n = sc.nextInt();
int[][] matrix = new int[n][n];
for(int i = 0 ; i<n;i++){
for(int j = 0 ; j < n ; j++){
matrix[i][j] = sc.nextInt();
}
}
rotate90(matrix);
System.out.println("结果是");
for(int[] num:matrix){
for(int i:num){
System.out.print(i+" ");
}
System.out.println();
}
}
}