演算法——旋轉正方形矩陣
摘要:
給定一個整形正方形矩陣arr,請把改矩陣調整成順時針選擇90度的樣子。
示例:
旋轉後:
package suanfa;
public class demo3 {
public static void main(String[] args) {
int[]...
給定一個整形正方形矩陣arr,請把改矩陣調整成順時針選擇90度的樣子。
示例:
旋轉後:
package suanfa; public class demo3 { public static void main(String[] args) { int[][] arr={{1,2,3},{4,5,6},{7,8,9}}; xuanze(arr); } private static void xuanze(int[][] arr) { int a=0,b=0,c=arr.length-1,d=arr[0].length-1;//初始化左上座標(a,b)和右下座標(c,d) while(a<c&&b<d){//兩個座標相遇或超過時結束迴圈 //先旋轉外圈,再旋轉內圈 //兩個座標向中心走 rotate(arr,a++,b++,c--,d--); } } private static void rotate(int[][] arr, int a, int b, int c, int d) { int count=a;//每條邊的旋轉起點 while(count<d-b){//限制旋轉的終點 int temp=arr[a][b+count]; arr[a][b+count]=arr[c-count][b]; arr[c-count][b]=arr[c][d-count]; arr[c][d-count]=arr[a+count][d]; arr[a+count][d]=temp; count++; } } }