原地翻转或旋转矩阵
idx, halfLen := len(matrix)-1, len(matrix) / 2 // 记录最后一个元素的下标和边长的一半
// 按对角线反转矩阵
for i := range matrix {
for j := 0; j < i; j++ {
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
}
}
// 按竖中轴线反转矩阵
for i := range matrix {
for j := 0; j < halfLen; j++ {
matrix[i][j], matrix[i][idx-j] = matrix[i][idx-j], matrix[i][j]
}
}
// 按横中轴线反转矩阵
for i := 0; i < helfLen; i++ {
for j := range matrix[i] {
matrix[idx-i][j], matrix[i][j] = matrix[i][j], matrix[idx-i][j]
}
}
顺时针旋转90:先沿对角线反转矩阵,再沿竖中轴线反转矩阵;
顺时针旋转180:先沿横中轴线反转矩阵,再沿竖中轴线反转矩阵;
顺时针旋转270:先沿对角线反转矩阵,再沿横中轴线反转矩阵;
作者:cheless-w
链接:https://leetcode.cn/problems/rotate-image/solution/xuan-zhuan-90180270-by-cheless-w-5b8m/
来源:力扣(LeetCode)

浙公网安备 33010602011771号