旋转图像 - 旋转

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