优化一个二维数组旋转90度的Python代码示例
时间: 2024-02-16 19:32:29 浏览: 78
以下是一个优化后的二维数组旋转90度的Python代码示例:
```python
def rotate(matrix):
n = len(matrix)
for i in range(n//2):
for j in range(i, n-i-1):
temp = matrix[i][j]
matrix[i][j] = matrix[n-j-1][i]
matrix[n-j-1][i] = matrix[n-i-1][n-j-1]
matrix[n-i-1][n-j-1] = matrix[j][n-i-1]
matrix[j][n-i-1] = temp
return matrix
```
这个函数接受一个二维数组作为参数,并返回旋转90度后的数组。它使用了两个嵌套的循环来遍历数组中的元素,并使用一个临时变量来交换元素的位置。这个算法的时间复杂度是 O(n^2),空间复杂度是 O(1)。
相比于常见的解法,这个算法在循环的范围和变量的命名上进行了优化,使代码更加清晰易读。同时,它也具有较高的效率和稳定性,适用于处理大规模的数据。
相关问题
二维数组旋转180度
要将一个二维数组旋转180度,可以按照以下步骤进行操作:
1. 首先,将数组进行水平翻转。即将数组的第一行和最后一行交换、第二行和倒数第二行交换,以此类推,直到数组中心。
2. 接下来,将数组进行垂直翻转。即将数组的第一列和最后一列交换、第二列和倒数第二列交换,以此类推,直到数组中心。
完成这两步操作后,原始二维数组就会被旋转180度。
以下是一个示例的实现代码:
```python
def rotate_array(arr):
# 水平翻转
arr = arr[::-1]
# 垂直翻转
for row in arr:
row.reverse()
return arr
# 测试
array = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
rotated_array = rotate_array(array)
print(rotated_array)
```
运行结果为:
```
[[9, 8, 7],
[6, 5, 4],
[3, 2, 1]]
```
这样,二维数组就完成了180度的旋转。
python用for循环二维数组进行旋转90度
您可以使用以下代码来旋转一个二维数组90度:
```python
def rotate_90(matrix):
rows = len(matrix)
cols = len(matrix[0])
# 创建一个新的二维数组,尺寸为旋转后的尺寸
rotated = [[0] * rows for _ in range(cols)]
# 旋转操作
for i in range(rows):
for j in range(cols):
rotated[j][rows - i - 1] = matrix[i][j]
return rotated
```
这里的`matrix`是要旋转的二维数组,`rotated`是旋转后的结果。算法的核心是通过两个嵌套的循环遍历原始矩阵中的每个元素,并将其放置到旋转后位置的新矩阵中。具体来说,新矩阵的行索引是旧矩阵的列索引,新矩阵的列索引是旧矩阵行索引的倒序。这样就完成了90度的旋转。
您可以使用以下示例代码测试该函数:
```python
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
rotated = rotate_90(matrix)
for row in rotated:
print(row)
```
输出结果为:
```
[7, 4, 1]
[8, 5, 2]
[9, 6, 3]
```
希望能帮助到您!如果您有任何其他问题,请随时问我。
阅读全文