
Rotate image
翻轉一組二維陣列, 而且不能創造另一個二位陣列去暫存資料
解題脈絡
每個位置都往後替換90度的目標, 可以先把職轉換出來
原陣列
00,01,02,03
10,11,12,13
20,21,22,23
30,31,32,33
轉換後
30,20,10,00
31,21,11,01
32,22,12,02
33,23,13,03
可以看出 00 -> 03 -> 33 -> 30, 01 -> 13 -> 32 -> 20
由此可以得出作法
寫法
func rotate(matrix [][]int) {
n := len(matrix)
for i := 0; i < n/2; i++ {
for j := i; j < n-1-i; j++ {
temp := matrix[i][j]
matrix[i][j] = matrix[n-1-j][i] //[0][0] = [2][0]
matrix[n-1-j][i] = matrix[n-1-i][n-1-j] //[2][0] = [2][2]
matrix[n-1-i][n-1-j] = matrix[j][n-1-i] //[2][2] = [0][2]
matrix[j][n-1-i] = temp //[0][2] = [0][0]
}
}
}
好好紀錄, 如何應用的