编程题旋转图像怎么写的

时间:2025-01-27 10:23:52 网络游戏

要在原地顺时针旋转一个 n × n 的二维矩阵 90 度,可以按照以下步骤进行:

沿主对角线翻转 :将矩阵沿主对角线(即从左上角到右下角的对角线)翻转。这一步操作后,矩阵的每一行会变为原来矩阵的每一列,但顺序是反向的。

沿水平中线翻转:

将每一行沿水平中线(即矩阵的中线)翻转。这一步操作后,矩阵的每一列会变为原来矩阵的每一行,但顺序是反向的。

通过这两步操作,可以实现原地顺时针旋转 90 度。

```python

def rotate(matrix):

n = len(matrix)

Step 1: Transpose the matrix (flip along the main diagonal)

for i in range(n):

for j in range(i, n):

matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

Step 2: Reverse each row (flip along the horizontal midline)

for i in range(n):

matrix[i].reverse()

```

解释

沿主对角线翻转

```python

for i in range(n):

for j in range(i, n):

matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

```

这段代码通过两个嵌套的循环,交换了矩阵中每个元素 `matrix[i][j]` 和 `matrix[j][i]`,从而实现沿主对角线的翻转。

沿水平中线翻转

```python

for i in range(n):

matrix[i].reverse()

```

这段代码通过 `reverse()` 方法将每一行反转,从而实现沿水平中线的翻转。

示例

假设输入矩阵为:

```python

matrix = [

[1, 2, 3],

[4, 5, 6],

[7, 8, 9]

]

```

经过上述代码处理后,矩阵将变为:

```python

[

[7, 4, 1],

[8, 5, 2],

[9, 6, 3]

]

```

这种方法不需要额外的空间,直接在原矩阵上进行操作,满足了题目要求的“原地旋转”条件。