实现原地旋转二维矩阵c++
时间: 2024-09-09 20:00:49 浏览: 68
方阵顺时针旋转的实现代码
原地旋转二维矩阵是指在不使用额外空间的情况下,将一个给定的矩阵顺时针或逆时针旋转90度。这可以通过矩阵的元素交换来实现,因为二维数组实际上是对称的。以下是C++代码示例,演示如何原地旋转一个二维矩阵:
```cpp
#include <vector>
using namespace std;
void rotateMatrix(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int layer = 0; layer < n / 2; layer++) {
int first = layer, last = n - 1 - layer;
for (int i = first; i < last; ++i) {
int offset = i - first;
// 交换四个相邻元素:(i, j), (j, n-i-1), (n-i-1, n-j-1), (n-j-1, i)
swap(matrix[i][last - offset], matrix[last][n - 1 - offset]);
swap(matrix[last][offset], matrix[n - 1 - offset][last]);
swap(matrix[n - 1 - offset][first], matrix[first][offset]);
}
}
}
int main() {
vector<vector<int>> matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
rotateMatrix(matrix);
for (const auto& row : matrix) {
for (int num : row) {
cout << num << " ";
}
cout << endl;
}
return 0;
}
```
阅读全文