LeetCode 48. 旋转图像

题目描述

🔥 48. 旋转图像

image-20230305131821519

image-20230305131827245

思路分析

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

  1. 转置矩阵:首先将矩阵进行转置,即将 matrix[i][j]matrix[j][i] 交换。
  2. 反转每一行:转置完成后,再将每一行进行反转,即将 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),只使用了常数级别的额外空间。

🍏 点击查看 Java 题解

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