- 48.旋转图像
- 旋转
- 用翻转代替旋转
旋转图像 - 旋转
var (
theMatrix [][]int
N int
)
func rotate(matrix [][]int) {
n := len(matrix)
if n <= 1 {
return
}
theMatrix = matrix
N = n
for i := 0; i < n >> 1; i++ {
for j := 0; j < (n + 1) >> 1; j++ {
process(i, j)
}
}
}
func process(i, j int) {
tmp := theMatrix[i][j]
theMatrix[i][j] = theMatrix[N - 1 - j][i]
theMatrix[N - 1 - j][i] = theMatrix[N - 1 - i][N - 1 - j]
theMatrix[N - 1 - i][N - 1 - j] = theMatrix[N - 1 - i][N - 1 - j]
theMatrix[N - 1 - i][N - 1 - j] = theMatrix[j][N - 1 - i]
theMatrix[j][N - 1 - i] = tmp
}
旋转图像 - 翻转代替旋转
沿水平轴翻转后,沿主对角线翻转。
func rotate(matrix [][]int) {
n := len(matrix)
if n <= 1 {
return
}
// 水平轴翻转
for i := 0; i < n >> 1; i++ {
matrix[i], matrix[n - 1 - i] = matrix[n - 1 - i], matrix[i]
}
// 主对角线反转
for i := 0; i < n; i++ {
for j := 0; j < i; j++ {
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
}
}
}