我是想将一个二维数组顺时针旋转90度
时间: 2023-09-02 15:09:39 浏览: 174
二维数组习题讲解ppt
好的,以下是使用 C++ 实现将一个二维数组顺时针旋转90度的代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void rotate(vector<vector<int>>& matrix) {
int n = matrix.size();
// Transpose the matrix
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
swap(matrix[i][j], matrix[j][i]);
}
}
// Reverse each row
for (int i = 0; i < n; ++i) {
reverse(matrix[i].begin(), matrix[i].end());
}
}
int main() {
vector<vector<int>> matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
rotate(matrix);
for (int i = 0; i < matrix.size(); ++i) {
for (int j = 0; j < matrix[i].size(); ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
以上代码的时间复杂度为 $O(n^2)$,空间复杂度为 $O(1)$,其中 $n$ 为二维数组的边长。具体来说,我们可以先对二维数组进行转置操作,然后再将每一行进行翻转即可得到顺时针旋转90度后的二维数组。
阅读全文