给定一个整型正方形矩阵matrix,请把该矩阵调整成 顺时针旋转90度的样子。 【要求】 额外空间复杂度为O(1)。
public class e09rotate {
public static void rotate ( int [ ] [ ] matrix) {
int tR= 0 ;
int tC= 0 ;
int dR= matrix. length- 1 ;
int dC= matrix[ 0 ] . length- 1 ;
while ( tR< dR) {
rotateEdge ( matrix, tR++ , tC++ , dR-- , dC-- ) ;
}
printMatrix ( matrix) ;
}
public static void rotateEdge ( int [ ] [ ] m, int tR, int tC, int dR, int dC) {
int times= dC- tC;
int tmp= 0 ;
for ( int i= 0 ; i< times; i++ ) {
tmp= m[ tR] [ tC+ i] ;
m[ tR] [ tC+ i] = m[ dR- i] [ tC] ;
m[ dR- i] [ tC] = m[ dR] [ dC- i] ;
m[ dR] [ dC- i] = m[ tR+ i] [ dC] ;
m[ tR+ i] [ dC] = tmp;
}
}
public static void printMatrix ( int [ ] [ ] m) {
for ( int i= 0 ; i< m. length; i++ ) {
for ( int j= 0 ; j< m[ 0 ] . length; j++ ) {
System. out. print ( m[ i] [ j] + " " ) ;
}
System. out. println ( ) ;
}
}
public static void main ( String[ ] args) {
int [ ] [ ] m= { { 1 , 2 , 3 , 4 } , { 5 , 6 , 7 , 8 } , { 9 , 10 , 11 , 12 } , { 13 , 14 , 15 , 16 } } ;
rotate ( m) ;
}
}