/**
* 將n*n的二維數組,順時針旋轉90度都,二維數組的內容
*/
public class RotateMatrix {
/**
* 上右下左,四個爲一組,循環替換
* 時間複雜度n*n,只能在原數組的基礎上旋轉
* @param arr
*/
public void rotate(int[][] arr) {
int maxIndex = arr.length - 1;
int n = arr.length % 2 == 0 ? arr.length / 2 - 1 : arr.length / 2;
int i = 0;
int j = 0;
while (i <= n) {
while (j < maxIndex - i) {
int temp = arr[i][j];
arr[i][j] = arr[maxIndex - j][i];
arr[maxIndex - j][i] = arr[maxIndex - i][maxIndex - j];
arr[maxIndex - i][maxIndex - j] = arr[j][maxIndex - i];
arr[j][maxIndex - i] = temp;
j++;
continue;
}
i++;
j = i;
}
}
public static void main(String[] args) {
int n = 10;
int num = 1;
int[][] arr = new int[n][n];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = num++;
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(String.format("%4d", arr[i][j]));
}
System.out.println();
}
System.out.println();
RotateMatrix rotateMatrix = new RotateMatrix();
rotateMatrix.rotate(arr);
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(String.format("%4d", arr[i][j]));
}
System.out.println();
}
}
}
RotateMatrix-N*N矩陣原數組上順時針旋轉90度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.