题目:
给定一个N x N的矩阵matrix,把这个矩阵调整成顺时针转动90°后的形式。
例如:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
顺时针转动90°后为:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
要求:
额外时间复杂度为Q(1)
package main
import (
"fmt"
)
func calPrintNum(arr [][]int, tR, tC, dR, dC int) {
for i := tC; i < dC; i++ {
tmp := arr[tR][tC+i]
arr[tR][tC+i] = arr[dR-i][tC]
arr[dR-i][tC] = arr[dR][dC-i]
arr[dR][dC-i] = arr[tR+i][dC]
arr[tR+i][dC] = tmp
}
}
func printMatrix(arr [][]int, row, col int) {
for i := 0; i < row; i++ {
for j := 0; j < col; j++ {
fmt.Printf("%2d ", arr[i][j])
}
fmt.Println()
}
}
func main() {
matrix := [][]int {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16},
}
length := len(matrix)
tR := 0
tC := 0
dR := length-1
dC := length-1
for tR <= dR {
calPrintNum(matrix, tR, tC, dR, dC)
tR++
tC++
dR--
dC--
}
// fmt.Println("matrix is:", matrix)
printMatrix(matrix, length, length)
}