如何将二维数组左转90°
时间: 2024-12-11 08:15:41 浏览: 10
要将一个二维数组(矩阵)左转90度,你可以使用以下步骤:
1. 假设原始数组 `arr` 是一个 `m x n` 的矩阵,其中 `m` 表示行数,`n` 表示列数。首先,我们需要交换每一行和它对应的“旋转”后的列。
2. 创建一个新的 `n x m` 的矩阵 `newArr` 用于存储旋转后的结果。
3. 遍历原数组的每一行 `i` 和每一列 `j`,将当前元素 `arr[i][j]` 放入新矩阵 `newArr[j][m-i-1]`。这是因为当我们顺时针旋转数组时,原数组的第 `i` 行第 `j` 列的新位置将是新矩阵的第 `j` 列(因为列变成了行索引),而原行的索引 `i` 变成了列索引 `m-i-1`(从右上角开始计数,减去1得到实际的位置)。
下面是C++代码实现这个过程:
```cpp
#include <vector>
std::vector<std::vector<int>> rotateMatrix(const std::vector<std::vector<int>>& arr) {
int m = arr.size();
int n = arr[0].size();
// 新建一个n*m大小的矩阵
std::vector<std::vector<int>> newArr(n, std::vector<int>(m));
// 旋转并填充新矩阵
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
newArr[j][m - i - 1] = arr[i][j];
}
}
return newArr;
}
```
阅读全文