翻轉一組二維陣列, 而且...
leetcode

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]
		}
	}
}

好好紀錄, 如何應用的