/**
* 将一个矩阵(一定是正方形)顺时针旋转九十度
*/
public class C06_RotateMatrix {
public static void rotateMatrix(int[][]arr){
if(arr==null || arr.length==0 || arr[0].length==0){
return ;
}
int a = 0;//左上角,列
int b = 0;//左上角,行
int c = arr[0].length-1;//右下角,列
int d = arr.length-1;//右下角,行
while(a<=c && b<=d){
rotateEdge(arr, a++, b++, c--, d--);
}
}
public static void rotateEdge(int[][]arr,int a,int b,int c,int d){
int times = c - a;
for (int i = 0; i < times; i++) {
int t = arr[b][a+i];
arr[b][a+i] = arr[d-i][a];
arr[d-i][a] = arr[d][c-i];
arr[d][c-i] = arr[b+i][c];
arr[b+i][c] = t;
}
}
public static void printMatrix(int[][]arr){
for(int i = 0;i<arr.length;i++){
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
int arr[][] = new int[][]{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
printMatrix(arr);
rotateMatrix(arr);
System.out.println("======");
printMatrix(arr);
}
}
顺时针旋转矩阵九十度
最新推荐文章于 2024-08-13 21:40:25 发布