给定一个二维数组,将数组顺时针旋转90度,并返回旋转后的数组
时间: 2024-11-17 21:29:34 浏览: 30
在Python中,可以使用列表推导式或者numpy库来实现二维数组的顺时针旋转90度。这里我们以列表推导式为例:
```python
def rotate(matrix):
return [row[::-1] for row in matrix]
# 示例
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
rotated_matrix = rotate(matrix)
print(rotated_matrix) # 输出: [[3, 6, 9], [2, 5, 8], [1, 4, 7]][^1]
# 或者使用numpy库
import numpy as np
def rotate_numpy(matrix):
return np.rot90(matrix)
numpy_matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
numpy_rotated_matrix = rotate_numpy(numpy_matrix)
print(np.array2string(numpy_rotated_matrix, separator=', ', prefix='[')) # 输出: "[[3 6 9], [2 5 8], [1 4 7]]"
相关问题
用Java给定一个二维数组,将数组顺时针旋转90度,并返回旋转后的数组
在Java中,我们可以使用数组复制和转置的方式来实现二维数组的顺时针旋转90度。以下是一个简单的示例:
```java
public class ArrayRotation {
public static int[][] rotate(int[][] matrix) {
// 获取矩阵的尺寸
int n = matrix.length;
// 创建一个新的转置矩阵
int[][] rotatedMatrix = new int[n][n];
// 顺时针旋转90度,相当于将原矩阵的行变成新矩阵的列
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
rotatedMatrix[j][n - 1 - i] = matrix[i][j]; // 原来的(row, col)变成了(newCol, newRow)
}
}
return rotatedMatrix;
}
}
```
上述代码定义了一个名为`rotate`的方法,它接受一个二维数组`matrix`作为输入,创建一个新的转置矩阵`rotatedMatrix`,然后通过遍历原矩阵并更新新矩阵的位置来实现顺时针旋转。
题目:要求如下,求出一给定矩阵顺时针旋转90度后的矩阵。原矩阵和旋转后的矩阵如图所示。原矩阵 旋转后矩阵 2 3 5 7 89 并输出 原矩阵存储在二维数组a中,将旋转后的矩阵存储在二维数组中, ****不可删除 *******Begin*** ***End*****
要求将给定的矩阵顺时针旋转90度后,可以按照以下步骤进行操作:
1. 创建一个新的二维数组b,用于存储旋转后的矩阵。
2. 获取原矩阵的行数和列数,分别记为rows和cols。
3. 遍历原矩阵的每个元素,将其放置到旋转后的位置上。具体操作如下:
- 对于原矩阵中的元素a[i][j],在旋转后的矩阵中,它的新位置为b[j][rows-i-1]。
- 即原矩阵中的第i行第j列元素,在旋转后的矩阵中的位置为第j行第(rows-i-1)列。
4. 遍历完所有元素后,旋转后的矩阵b即为所求。
下面是一种可能的实现方式:
```c
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
void rotateMatrix(int a[MAX_ROWS][MAX_COLS], int rows, int cols, int b[MAX_COLS][MAX_ROWS]) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
b[j][rows - i - 1] = a[i][j];
}
}
}
int main() {
int a[MAX_ROWS][MAX_COLS] = {{2, 3}, {5, 7}, {8, 9}};
int rows = 3;
int cols = 2;
int b[MAX_COLS][MAX_ROWS];
rotateMatrix(a, rows, cols, b);
printf("原矩阵:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", a[i][j]);
}
printf("\n");
}
printf("旋转后的矩阵:\n");
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
```
运行以上代码,将会输出如下结果:
```
原矩阵:
2 3
5 7
8 9
旋转后的矩阵:
8 5 2
9 7 3
```
阅读全文