题目
给定一个 nxn
的 2D 矩阵表示的图像,将这个矩阵顺时针旋转 90度。必须在矩阵内做本地替换,不要使用额外的 2D 矩阵存储。
解析
矩阵顺时针旋转90度,即 将矩阵先 上下翻转,然后沿 [0n,n0] 斜轴做翻转即可。
伪代码
# 横翻转
i=0, j=row-1
for i<j
for c < col
swap(matrix[i,c], matrix[j,c])
# 斜翻转
i = 0, j=0
for i< row
for j=i+1, j< col
swap(matrix[i,j], matrix[j,i])
代码
func rotate(matrix [][]int) {
for i,j:= 0,len(matrix)-1; i<j; i,j=i+1,j-1 {
for c := 0; c<len(matrix); c++ {
matrix[i][c] = matrix[i][c] + matrix[j][c]
matrix[j][c] = matrix[i][c] - matrix[j][c]
matrix[i][c] = matrix[i][c] - matrix[j][c]
}
}
for i:=0; i<len(matrix); i++ {
for j:=i+1; j<len(matrix); j++ {
matrix[i][j] = matrix[i][j] + matrix[j][i]
matrix[j][i] = matrix[i][j] - matrix[j][i]
matrix[i][j] = matrix[i][j] - matrix[j][i]
}
}
}

网友评论