旋轉正方形矩陣

2021-09-24 21:27:03 字數 893 閱讀 5336

【題目】 給定乙個整型正方形矩陣matrix,請把該矩陣調整成 順時針旋轉90度的樣子。

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

思路:採用分圈處理的方式,利用矩陣的左上角座標和右下角座標,例如矩陣:

1   2   3   4

5   6   7   8

9 10 11  12

13 14 15 16 

最外層 1、4、16、13 替換  2、8、15、9替換  3、12、14、5替換,同理:遞迴實現每一層每個位置替換

def rotate(matrix):

tr = 0

tc = 0

dr = len(matrix)-1

dc = len(matrix[0])-1

while tr < dr:

rorateedge(matrix,tr,tc,dr,dc)

tr +=1

tc +=1

dr -=1

dc -=1

def rorateedge(matrix,tr,tc,dr,dc):

time = dc - tc

for i in range(time):

tmp = matrix[tr][tc+i]

matrix[tr][tc+i] = matrix[dr - i][tc]

matrix[dr - i][tc] = matrix[dr][dc-i]

matrix[dr][dc-i] = matrix[tr + i][dc]

matrix[tr + i][dc] = tmp

s = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]

rotate(s)

s

旋轉正方形矩陣

題目 給定乙個整型正方形矩陣matrix,請把該矩陣調整成 順時針旋轉90度的樣子。要求 額外空間複雜度為o 1 例如 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 結果 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4 思路 巨集觀代替微...

旋轉正方形矩陣

將整個旋轉過程轉化為由外向內逐層旋轉 使用四個指標lr,lc,rr,rc lr,lc 標記正方形左上角位置座標 rr,rc 標記正方形右下角位置座標 times rr lr用來計算這一層需要調換的次數 void rotate int arr,int lr,int lc,int rr,int rc 旋...

旋轉正方形矩陣

題目 給定乙個整型正方形矩陣matrix,請把該矩陣調整成順時針旋轉90度的樣子。要求 額外空間複雜度為o 1 解答 還是一圈圈的旋轉,首先旋轉最外面,然後逐層向里,在旋轉的時候唯一需要注意的就是元素之間的位置替換 圖形化 順時針旋轉矩陣 20200109100649.png class solut...