旋轉(zhuǎn)圖像問題。
在計算機中圖片都是以二進制數(shù)組存儲的,所以旋轉(zhuǎn)圖像問題就對應(yīng)于數(shù)組變換的問題。
輸入:一個二維數(shù)組
輸出:clockwise 旋轉(zhuǎn)90°后的二維數(shù)組

用例
分析
還是類似于找規(guī)律的問題。可以發(fā)現(xiàn) m[i][j] = m[n-1-j][i]
思路
每一輪做一個類似閉環(huán)的4個元素交換

元素交換示意圖
唯一要注意的就是循環(huán)結(jié)束條件。
代碼
package day_11;
import java.util.Arrays;
// 數(shù)組順時針旋轉(zhuǎn) 90°的問題。
// 觀察到一個規(guī)律就是說 m[i][j] = m[n-1-j][i]
// 由于不能allocate 一個新的二維數(shù)組。 下面就要做一個閉環(huán)的交換
public class RotateImage {
public void rotate(int[][] matrix){
int n = matrix.length;
for (int i=0;i<n/2;i++){
for(int j=0;j<(n+1)/2;j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[n-1-j][i];
matrix[n-1-j][i] = matrix[n-1-i][n-1-j];
matrix[n-1-i][n-1-j] = matrix[j][n-1-i];
matrix[j][n-1-i] = temp;
}
}
}
public static void main(String args[]){
int a[][] = {{5,1,9,11},{2,4,8,10},{13,3,6,7},{15,14,12,16}};
RotateImage r = new RotateImage();
r.rotate(a);
for(int i=0;i<a.length;i++){
System.out.print(Arrays.toString(a[i]));
}
}
}