首页 > 代码库 > 矩阵逆时针旋转90度,空间复杂度O(1)

矩阵逆时针旋转90度,空间复杂度O(1)

将一个矩阵逆时针旋转90度,首先可以沿左上角-右下角斜对角线,进行上下交换数据,然后上下数据交换即可。

 1 #include <stdio.h> 2 #include <stdlib.h> 3 //矩阵逆时针旋转90度 4 int main() 5 { 6     int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; 7     int b[3][3]; 8     int i; 9     int j;10     int temp;11     printf("原始矩阵\n");12     for(i=0;i<3;i++){13       for(j=0;j<3;j++){14           printf("%d ",a[i][j]);15       }16         printf("\n");17      }18 19     printf("第一次转换\n");20 21     for(i=0;i<3;i++){22         for(j=i;j<3;j++){23            temp=a[i][j];24            a[i][j]=a[j][i];25            a[j][i]=temp;26         }27     }28      for(i=0;i<3;i++){29         for(j=0;j<3;j++){30          printf("%d ",a[i][j]);31         }32         printf("\n");33      }34      printf("第二次转换\n");35      for(i=0;i<3/2;i++){36         for(j=0;j<3;j++){37           temp=a[i][j];38           a[i][j]=a[3-i-1][j];39           a[3-i-1][j]=temp;40         }41      }42 43       for(i=0;i<3;i++){44         for(j=0;j<3;j++){45          printf("%d ",a[i][j]);46         }47         printf("\n");48      }49 50     return 0;51 }

 

矩阵逆时针旋转90度,空间复杂度O(1)