旋转矩阵

2024 年 8 月 29 日 | 4 分钟阅读

本文将介绍将给定矩阵元素顺时针旋转的代码。为了可视化这个问题,我们先看一些矩阵旋转的例子。

矩阵旋转示例

对于 3 * 3 矩阵

输入

输出

2    1    4
3    5    7
6    9    8

对于 4 * 4 矩阵

输入

输出

2    1    5    9
3    7    6   13
4   11   10   14
8   12   16   15

方法 - 1

这个问题与另一个关于矩阵打印螺旋状的问题类似。我们将使用类似的循环,但这次我们需要根据层来处理。我们需要逐个旋转矩阵的所有层,从构成矩阵边界的那一层开始。

我们将按照以下步骤旋转矩阵的一层:

  • 首先,我们将遍历矩阵顶行的元素。
  • 然后,我们将移动最右列或该层的右侧部分的元素。
  • 接下来,我们将处理最底行的元素或该层的底部部分,并将它们从最右列移动到最左列。
  • 最后,我们将遍历矩阵最左列的元素。
  • 我们将对矩阵的每一层重复这些步骤,直到层完成,或者只剩下一个元素在矩阵的中间。

下面是使用上述方法解决问题并旋转给定矩阵的 Python 代码。

代码

输出

Rotated matrix1:
[2, 1, 4]
[3, 5, 7]
[6, 9, 8]
Rotated matrix2:
[2, 1, 5, 9]
[3, 7, 6, 13]
[4, 11, 10, 14]
[8, 12, 16, 15]

时间复杂度: O(max(m, n) * max(m, n)) 是此程序的 time complexity,其中 m 是矩阵的行数,n 是矩阵的列数。

辅助空间: 此程序将占用 O(m * n) 的额外内存空间。


下一个主题水质分析