Loading... 这个题目比较恶心,直接进行交换的循环会有重复的交换导致最终结果不符合,顺时针旋转90度,需要先转置,再左右翻转,转置相当于把右上方的部分跟左下方的部分进行交换,中间那一条线是不需要换的。 左右翻转相当于把左半部分跟右半部分进行交换,同样的中间那条线不需要交换。 ```go func rotate(matrix [][]int) { n := len(matrix) // 先转置 for i := 0; i < n; i++ { for j := i+1; j < n; j++ { matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] } } // 再翻转 for i := 0; i < n; i++ { for j := 0; j < n / 2; j++ { matrix[i][j], matrix[i][n-j-1] = matrix[i][n-j-1], matrix[i][j] } } } ``` Last modification:July 21, 2025 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏