LeetCode 48. 旋转图像
题目描述
🔥 48. 旋转图像
思路分析
首先沿着对角线翻转,然后垂直翻转。
- 转置矩阵:首先将矩阵进行转置,即将
matrix[i][j]
和matrix[j][i]
交换。- 反转每一行:转置完成后,再将每一行进行反转,即将
matrix[i][j]
和matrix[i][n-1-j]
交换。
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func rotate(matrix [][]int) {
n := len(matrix)
// 先进行矩阵的转置
for i := 0; i < n; i++ {
for j := i; 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]
}
}
}
- 时间复杂度:O (n^2),其中 n 是矩阵的边长。我们需要遍历每个元素进行转置和反转。
- 空间复杂度:O (1),只使用了常数级别的额外空间。
1
write your code here
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
本博客所有文章除特别声明外,均采用