LeetCode 48. 旋转图像

题目描述

48. 旋转图像

image-20230305131821519

image-20230305131827245

思路分析

❤️ 首先沿着对角线翻转,然后垂直翻转。

image-20250510105605393

参考代码

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)
  • 空间复杂度:O (1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
		}
	}

	// 第二步:水平翻转每一行
	for i := 0; i < n; i++ {
		for j, k := 0, n-1; j < k; j, k = j+1, k-1 {
			matrix[i][j], matrix[i][k] = matrix[i][k], matrix[i][j]
		}
	}
}
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)

➡️ 点击查看 Java 题解

1
write your code here
本文作者:
本文链接: https://hgnulb.github.io/blog/2025/62515833
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!