package main /** * '1' 2 '3' swap '7' 2 '1' next 7 '2' 1 * 4 5 6 -----> 4 5 6 -----> '4' 5 '6' -> ... * '7' 8 '9' '9' 8 '3' 9 '8' 3 */ func rotate(matrix [][]int) { side := len(matrix) - 1 for i := 0; i <= side/2; i++ { for j := 0; j < side-2*i; j++ { matrix[i][i+j], matrix[i+j][side-i], matrix[side-i][side-i-j], matrix[side-i-j][i] = matrix[side-i-j][i], matrix[i][i+j], matrix[i+j][side-i], matrix[side-i][side-i-j] } } } /* func main() { m1 := [][]int{ {11, 22, 33, 44, 55}, {16, 27, 38, 49, 50}, {11, 23, 35, 47, 59}, {12, 24, 36, 48, 50}, {15, 24, 33, 42, 51}, } rotate(m1) fmt.Println(m1) m2 := [][]int{ {1, 2}, {3, 4}, } rotate(m2) fmt.Println(m2) m3 := [][]int{} rotate(m3) fmt.Println(m3) } */