2021-04-01:给定一个正方形矩阵matrix,原地调整成顺时针90度转动的样子。[a,b,c,d,e,f,g,h,i]变成[g,d,a,h,e,b,i,f,c]。
福大大 答案2021-04-01:
四数交换。先外圈交换,再内圈交换。
代码用golang编写。代码如下:
代码语言:txt复制package main
import "fmt"
func main() {
matrix := [][]int{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}
printMatrix(matrix)
rotate(matrix)
printMatrix(matrix)
}
func rotate(matrix [][]int) {
matrixLen := len(matrix)
if matrixLen <= 1 {
return
}
a := 0 //左上行
b := 0 //左上列
c := matrixLen - 1 //右下行
d := c //右下列
//左上 右上 右下 左下
//a,b a,d c,d c,b
for a < c {
for j := a; j < c; j {
//四数交换
matrix[a][b j], matrix[a j][d], matrix[c][d-j], matrix[c-j][b] = matrix[a j][d], matrix[c][d-j], matrix[c-j][b], matrix[a][b j]
}
a
b
c--
d--
}
}
func printMatrix(matrix [][]int) {
for i := 0; i < len(matrix); i {
for j := 0; j < len(matrix[0]); j {
fmt.Print(matrix[i][j], "t")
}
fmt.Println("")
}
fmt.Println("-----------")
}
执行结果如下:
左神java代码
评论