將正方形矩陣順時針轉動90度

2022-09-16 03:54:13 字數 1067 閱讀 3457

題目:給定乙個n*n的矩陣matrix,求把這個矩陣調整成順時針轉動90度後的形式。

例如:1     2    3    4

5     6    7    8

9    10  11  12

13  14  15  16

順時針轉動90度後為:

13    9    5   1

14   10   6   2

15   11   7   3

16   12   8   4

要求:額外空間複雜度為o(1)

解答:這裡任然使用分圈處理的方式,在矩陣中用左上角的座標(tr,tc)和右下角的座標(dr,dc)就可以表示乙個子矩陣。題目中的矩陣,當(tr,tc)=(0,0)、(dr,dc)=(3,3)時,表示的子矩陣就是整個矩陣,這個子矩陣最外層的部分如下:

1   2   3   4

5             8

9            12

13 14 15 16 

在這個外圈中,1,4,16,13為一組,然後1佔據4的位置,4佔據16的位置,16佔據13的位置,13佔據1的位置,一組就調完了。然後2,8,15,9為一組,繼續調整的過程,最後3,12,14,5為一組,繼續佔據調整過程。然後(tr,tc)=(0,0)、(dr,dc)=(3,3)的子矩陣外層調整完畢。接下來令tr和tc加1,(tr,tc)=(1,1),令dr,dc減1,即(dr,dc)=(2,2),此時表示的子矩陣如下.

6       7

10    11

這個外層只有一組,佔據調整之後就可以了。所以如果子矩陣的大小是m*m,一共就有m-1組,分別進行調整即可。

具體過程請參看如下**的rotate方法:

1

public

void rotate(int

matrix)23

1819

2021

public

void rotateedge(int m,int tr,int tc,int dr,int

dc)22

234445}

4647

view code

將正方形矩陣順時針旋轉90度

將正方形矩陣順時針旋轉90度 給定乙個n n的矩陣matrix,請把這個矩陣順時針轉動90度。輸入描述 輸入包含多行,第一行乙個整數n 1 n 200 n 1 leq n leq 200 n 1 n 200 代表矩陣的行數和列數,接下來n行,每行n個整數,代表矩陣mat rix 1 ma trix ...

矩陣順時針轉動90度

輸入描述 輸入包含多行,第一行乙個整數n 1 n 200 代表矩陣的行數和列數,接下來n行,每行n個整數,代表矩陣matrix 1 matrix i j 40000 輸出描述 輸出旋轉後的矩陣 包含n行,每行n個數 示例1輸入 41 2 3 4 5 6 7 8 9 10 11 12 13 14 15...

Java實現矩陣順時針旋轉90度

實現矩陣的轉置較為容易,只需要將縱橫下標互換即可。實現矩陣旋轉稍微麻煩一點。解題思路 矩陣轉換90度,則原矩陣的縱下標轉變為新矩陣的橫下標 原矩陣的橫下標轉變為新矩陣的縱下標,並且順序相反。public class rotation public static int change int matr...