【題目】 給定乙個整型正方形矩陣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...