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)